home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / parallexmountains / mountain_demo1.s < prev    next >
Text File  |  1980-01-03  |  52KB  |  2,568 lines

  1. ;=============================================================================
  2. ; Parallex Mountains Demo
  3. ; ----------------------------------------------------------------------------
  4. ; AGA Fixes:    AGA Copper fix
  5. ;        Blit waits added (there where none at all, doh!)
  6. ;        Absolute address access to Interrupts without VBR base
  7. ;=============================================================================
  8.  
  9.         section andy,code_c
  10.         incdir    scene1:coding/asm/demos_parallexmountains/
  11.  
  12. startlist1    equ    38
  13. startlist2    equ    50
  14.  
  15. plnw        equ    40
  16. plnh        equ    128
  17. plnsize        equ    plnw*plnh
  18. plnnum        equ    3
  19. plndata        equ    plnsize*plnnum
  20. buggerbuffer    equ    $ce4+80
  21.  
  22. Start2:        bsr    GetVBR            ;get vectorbase for interrupts
  23.  
  24.         move.l    4,a6
  25.         move.l    #$10002,d1
  26.         move.l    #plndata,d0
  27.         jsr    -198(a6)        ;allocate screen memory 1
  28.         move.l    d0,plnbase
  29.         beq    error
  30.  
  31.         move.l    #$10002,d1
  32.         move.l    #buggerbuffer,d0
  33.         jsr    -198(a6)        ;allocate screen memory 2
  34.         move.l    d0,scrlbase
  35.         beq    error
  36.  
  37.         move.w    #$0080,$dff096
  38.         move.w    $dff01c,sysint
  39.         or.w    #$c000,sysint        ;save system intena
  40.         move.w    #$7fff,$dff09a
  41.  
  42.         move.l    _VBR(pc),a0
  43.         move.l    $6c(a0),int3save    ;and level 6 irq
  44.         move.l    #isr,$6c(a0)
  45.  
  46.         move.l    #newcopper,$dff080    ;install our copperlist
  47.         move.w    #$0200,$dff100
  48.  
  49.     move.l    #spec0,d0
  50.     move.l    d0,stor
  51.     move.w    stor,sp0+2
  52.     move.w    stor+2,sp0+6
  53.     move.l    #spec1,d0
  54.     move.l    d0,stor
  55.     move.w    stor,sp1+2
  56.     move.w    stor+2,sp1+6
  57.     move.l    #spec2,d0
  58.     move.l    d0,stor
  59.     move.w    stor,sp2+2
  60.     move.w    stor+2,sp2+6
  61.     move.l    #spec3,d0
  62.     move.l    d0,stor
  63.     move.w    stor,sp3+2
  64.     move.w    stor+2,sp3+6
  65.  
  66.     move.l    plnbase,a1    ;mount range
  67.     move.l    #plnsize,d0
  68.     move.l    a1,stor
  69.     move.l    stor,pln1
  70.     move.w    stor,bp4+2
  71.     move.w    stor+2,bp4+6
  72.     add.l    d0,stor
  73.     move.l    stor,pln2
  74.     move.w    stor,bp5+2
  75.     move.w    stor+2,bp5+6
  76.     add.l    d0,stor
  77.     move.l    stor,pln3
  78.     move.w    stor,bp6+2
  79.     move.w    stor+2,bp6+6
  80.  
  81.     move.l    #logo,d0    ;top of logo    
  82.     sub.l    #2,d0
  83.     move.w    d0,bp11+6
  84.     swap    d0
  85.     move.w    d0,bp11+2
  86.     swap    d0
  87.     add.l    #3840,d0
  88.     move.w    d0,bp12+6
  89.     swap    d0
  90.     move.w    d0,bp12+2
  91.     swap    d0
  92.     add.l    #3840,d0
  93.     move.w    d0,bp13+6
  94.     swap    d0
  95.     move.w    d0,bp13+2
  96.     swap    d0
  97.     add.l    #3840,d0
  98.     move.l    d0,a0
  99.     add.l    #2,a0
  100.     move.l    #cols+2,a1
  101.     moveq.l    #7,d0
  102. .lp4:    move.w    (a0)+,(a1)+
  103.     add.l    #2,a1
  104.     dbra    d0,.lp4
  105.  
  106.     move.l    #logo+2000,d0    ;bot of logo
  107.     sub.l    #2,d0
  108.     move.w    d0,bp1+6
  109.     swap    d0
  110.     move.w    d0,bp1+2
  111.     swap    d0
  112.     add.l    #3840,d0
  113.     move.w    d0,bp2+6
  114.     swap    d0
  115.     move.w    d0,bp2+2
  116.     swap    d0
  117.     add.l    #3840,d0
  118.     move.w    d0,bp3+6
  119.     swap    d0
  120.     move.w    d0,bp3+2
  121.     swap    d0
  122.  
  123.     move.l    #plndat,stor
  124.     move.w    stor,bpln1+2
  125.     move.w    stor+2,bpln1+6
  126.  
  127.     move.l    #20479,d0
  128.     lea    plndat,a0
  129.     lea    plndat2,a1
  130. .lp:    move.l    (a0)+,(a1)
  131.     eor.l    #-1,(a1)+
  132.     dbra    d0,.lp
  133.  
  134.     move.l    #0,d0
  135.     move.l    #0,d1
  136.     lea    plnaddr,a0
  137.     move.l    #plndat,d2
  138. .lp2:    move.l    (a0,d1),a1
  139.     move.w    d2,6(a1)
  140.     swap    d2
  141.     move.w    d2,2(a1)
  142.     swap    d2
  143.     add.l    #40,d2
  144.     add.l    #4,d1
  145.     add.l    #1,d0
  146.     cmp.l    #128,d0
  147.     bne    .lp2
  148.  
  149.     move.l    #0,d0
  150.     move.l    #0,d1
  151.     move.l    #0,d2
  152.     
  153.     lea    ref,a0
  154. .lp3:    move.l    pln1,d3
  155.     add.l    #77*42,d3
  156.     move.l    d0,d1
  157.     mulu    #84,d1
  158.     sub.l    d1,d3
  159.     move.l    d3,d4
  160.     add.l    #plnsize,d4
  161.     move.l    d4,d5
  162.     add.l    #plnsize,d5
  163.  
  164.     move.w    d3,6(a0)
  165.     swap    d3
  166.     move.w    d3,2(a0)
  167.  
  168.     move.w    d4,14(a0)
  169.     swap    d4
  170.     move.w    d4,10(a0)
  171.  
  172.     move.w    d5,22(a0)
  173.     swap    d5
  174.     move.w    d5,18(a0)
  175.  
  176.     add.l    #1,d0
  177.     add.l    #36,a0
  178.     cmp.l    #39,d0
  179.     bne    .lp3
  180.  
  181.     move.l    #blnk,d3    ;blank under mount ref down to top of scrl
  182.  
  183. .lp5:    move.w    d3,6(a0)
  184.     move.w    d3,14(a0)
  185.     move.w    d3,22(a0)
  186.     swap    d3
  187.     move.w    d3,2(a0)
  188.     move.w    d3,10(a0)
  189.     move.w    d3,18(a0)
  190.     swap    d3
  191.  
  192.     add.l    #1,d0
  193.     add.l    #36,a0
  194.     cmp.l    #59,d0
  195.     bne    .lp5
  196.  
  197.     lea    ref3,a0
  198.     move.l    #59,d0
  199.     move.l    scrlbase,d3    ;scrl
  200.     move.l    d3,d4
  201.     add.l    #$44c,d4
  202.     move.l    d4,d5
  203.     add.l    #$44c,d5
  204.  
  205. .lp8:    move.w    d3,6(a0)
  206.     move.w    d4,14(a0)
  207.     move.w    d5,22(a0)
  208.     swap    d3
  209.     swap    d4
  210.     swap    d5
  211.     move.w    d3,2(a0)
  212.     move.w    d4,10(a0)
  213.     move.w    d5,18(a0)
  214.     swap    d3
  215.     swap    d4
  216.     swap    d5
  217.  
  218.     add.l    #44,d3
  219.     add.l    #44,d4
  220.     add.l    #44,d5
  221.     add.l    #1,d0
  222.     add.l    #36,a0
  223.     cmp.l    #78,d0
  224.     bne    .lp8
  225.  
  226.  
  227. .lp9:    move.w    d3,6(a0)
  228.     move.w    d4,14(a0)
  229.     move.w    d5,22(a0)
  230.     swap    d3
  231.     swap    d4
  232.     swap    d5
  233.     move.w    d3,2(a0)
  234.     move.w    d4,10(a0)
  235.     move.w    d5,18(a0)
  236.     swap    d3
  237.     swap    d4
  238.     swap    d5
  239.  
  240.     add.l    #44,d3
  241.     add.l    #44,d4
  242.     add.l    #44,d5
  243.     add.l    #1,d0
  244.     add.l    #36,a0
  245.     cmp.l    #84,d0
  246.     bne    .lp9
  247.  
  248.     lea    ref4,a0        ;blank from 0 down
  249.     move.l    #$2a,d0
  250.  
  251.     move.l    #blnk,d3
  252.  
  253. .lp6:    move.w    d3,6(a0)
  254.     move.w    d3,14(a0)
  255.     move.w    d3,22(a0)
  256.     swap    d3
  257.     move.w    d3,2(a0)
  258.     move.w    d3,10(a0)
  259.     move.w    d3,18(a0)
  260.     swap    d3
  261.  
  262.     add.l    #36,a0
  263.     dbra    d0,.lp6
  264.  
  265.     lea    ref2,a0        ;line between scrl & ref
  266.     move.w    d3,6(a0)
  267.     move.w    d3,14(a0)
  268.     move.w    d3,22(a0)
  269.     swap    d3
  270.     move.w    d3,2(a0)
  271.     move.w    d3,10(a0)
  272.     move.w    d3,18(a0)
  273.     swap    d3
  274.  
  275.     move.w    d3,bp1a+6
  276.     move.w    d3,bp1b+6
  277.     move.w    d3,bp1c+6
  278.     move.w    d3,bp2a+6
  279.     move.w    d3,bp2b+6
  280.     move.w    d3,bp2c+6
  281.     move.w    d3,bp3a+6
  282.     move.w    d3,bp3b+6
  283.     move.w    d3,bp3c+6
  284.     swap    d3
  285.     move.w    d3,bp1a+2
  286.     move.w    d3,bp1b+2
  287.     move.w    d3,bp1c+2
  288.     move.w    d3,bp2a+2
  289.     move.w    d3,bp2b+2
  290.     move.w    d3,bp2c+2
  291.     move.w    d3,bp3a+2
  292.     move.w    d3,bp3b+2
  293.     move.w    d3,bp3c+2
  294.  
  295.     lea    ref4,a0        ;scrl ref
  296.     move.l    scrlbase,d3
  297.     add.l    #24*44,d3
  298.     move.l    d3,d4
  299.     add.l    #$44c,d4
  300.     move.l    d4,d5
  301.     add.l    #$44c,d5
  302.  
  303.     move.l    #12,d0
  304. .lpa:    move.w    d3,6(a0)
  305.     move.w    d4,14(a0)
  306.     move.w    d5,22(a0)
  307.     swap    d3
  308.     swap    d4
  309.     swap    d5
  310.     move.w    d3,2(a0)
  311.     move.w    d4,10(a0)
  312.     move.w    d5,18(a0)
  313.     swap    d3
  314.     swap    d4
  315.     swap    d5
  316.  
  317.     sub.l    #88,d3
  318.     sub.l    #88,d4
  319.     sub.l    #88,d5
  320.  
  321.     add.l    #36,a0
  322.     dbra    d0,.lpa
  323.  
  324.     move.w    #$8480,$dff096    
  325.     
  326.     jsr    start
  327.  
  328.     move.b    #2,$bfe001
  329.  
  330. wait:    jsr    task            ;jmp to our sub.
  331.     btst    #6,$bfe001        ;wait for mouse.
  332.     bne    wait
  333.     move.l    4,a6
  334.     move.l    #gfxname,a1
  335.     moveq.l    #0,d0
  336.     jsr    -552(a6)
  337.     move.l    d0,a4
  338.     move.l    startlist1(a4),$dff080
  339.     move.l    startlist2(a4),$dff084
  340.     clr.w    $dff088    
  341.  
  342.     move.l    _VBR(pc),a0
  343.     move.l    int3save,$6c(a0)
  344.  
  345.     move.w    sysint,$dff09a
  346.     move.w    #$8080,$dff096
  347.     move.w    #$0400,$dff096
  348.     move.l    4,a6
  349.     move.l    plnbase,a1
  350.     move.l    #plndata,d0
  351.     jsr    -210(a6)
  352.     move.l    4,a6
  353.     move.l    scrlbase,a1
  354.     move.l    #buggerbuffer,d0
  355.     jsr    -210(a6)
  356.     jsr    stop
  357.     clr.l    d0
  358. error:    move.w    #$0fff,$dff180
  359.     rts                ;exit.
  360.  
  361. _LVOSupervisor    =    -$1E
  362. AttnFlags    =    $128
  363.  
  364. GetVBR:        move.l    4.w,a6            * get execbase
  365.         suba.l    a4,a4            * no vbr is default..
  366.         move.w    AttnFlags(a6),d0    * get cpu flags
  367.         and.w    #15,d0            * are we on M68000
  368.         beq.s    .skip            * if so skip
  369.         lea    .getvbr(pc),a5        * else try to get VBR
  370.         jsr    _LVOSupervisor(a6)    * force exception..
  371.         bra.s    .skip            * skip past it..
  372. .getvbr        movec    vbr,d0            * put vbr into d0
  373.         move.l    d0,a4            * now return in a0 please
  374.         rte                * return from exception
  375. .skip        move.l    a4,_VBR
  376.         rts
  377.  
  378. _VBR:        dc.l    0
  379.  
  380. newcopper:                    
  381.     dc.w    $01fc,$0000,$0106,$0000,$0104,$0000,$010c,$0000
  382.     DC.W    $0100,$3200
  383.     DC.W    $0102,$0000
  384.     dc.w    $0104,%0000000001010100
  385. bp11:    DC.W    $00e0,$0000,$00e2,$0000
  386. bp12:    DC.W    $00e4,$0000,$00e6,$0000
  387. bp13:    DC.W    $00e8,$0000,$00ea,$0000
  388. bp5:    DC.W    $00ec,$0000,$00ee,$0000
  389. bp3:    DC.W    $00f0,$0000,$00f2,$0000
  390. bp6:    DC.W    $00f4,$0000,$00f6,$0000
  391.     DC.W    $008E,$2c81,$0090,$2cc1                                 
  392.     DC.W    $0092,$0030,$0094,$00d0
  393. mod:    DC.W    $0108,-2,$010a,-2
  394. cols:    dc.w    $0180,$0000
  395.     dc.w    $0182,$0000
  396.     dc.w    $0184,$0000
  397.     dc.w    $0186,$0000
  398.     dc.w    $0188,$0000
  399.     dc.w    $018a,$0000
  400.     dc.w    $018c,$0000
  401.     dc.w    $018e,$0000
  402.  
  403.     dc.w    $0198,$0b74
  404.     dc.w    $019a,$0962
  405.     dc.w    $019c,$0851
  406.     dc.w    $019e,$0740
  407.     dc.w    $0192,$0fca
  408.     dc.w    $0194,$0ea8
  409.     dc.w    $0196,$0c85
  410.     dc.w    $01a2,$0f00
  411.     dc.w    $01a4,$0800
  412.     dc.w    $01a6,$0c00
  413.     dc.w    $01aa,$00f0
  414.     dc.w    $01ac,$0080
  415.     dc.w    $01ae,$00c0
  416. sp0:    dc.w    $0120,$0000,$0122,$0000    
  417. sp1:    dc.w    $0124,$0000,$0126,$0000    
  418. sp2:    dc.w    $0128,$0000,$012a,$0000    
  419. sp3:    dc.w    $012c,$0000,$012e,$0000    
  420. sp4:    dc.w    $0130,$0000,$0132,$0000    
  421. sp5:    dc.w    $0134,$0000,$0136,$0000    
  422. sp6:    dc.w    $0138,$0000,$013a,$0000    
  423. sp7:    dc.w    $013c,$0000,$013e,$0000    
  424.  
  425.     dc.w    $5e01,$fffe
  426.     DC.W    $0100,$6600
  427.     dc.w    $010a,0,$0104,%0000000001000100
  428. bp1:    DC.W    $00e0,$0000,$00e2,$0000
  429. bp4:    DC.W    $00e4,$0000,$00e6,$0000
  430. bp2:    DC.W    $00e8,$0000,$00ea,$0000
  431.     
  432.  
  433.  
  434.     dc.w    $8c01,$fffe
  435. bp1a:    DC.W    $00e0,$0000,$00e2,$0000
  436. bp2a:    DC.W    $00e8,$0000,$00ea,$0000
  437. bp3a:    DC.W    $00f0,$0000,$00f2,$0000
  438.     dc.w    $8d01,$fffe
  439. bp1b:    DC.W    $00e0,$0000,$00e2,$0000
  440. bp2b:    DC.W    $00e8,$0000,$00ea,$0000
  441. bp3b:    DC.W    $00f0,$0000,$00f2,$0000
  442.     dc.w    $8e01,$fffe
  443. bp1c:    DC.W    $00e0,$0000,$00e2,$0000
  444. bp2c:    DC.W    $00e8,$0000,$00ea,$0000
  445. bp3c:    DC.W    $00f0,$0000,$00f2,$0000
  446.  
  447.  
  448.     dc.w    $ab01,$fffe
  449.  
  450.     dc.w    $0190,$0777
  451.     dc.w    $0192,$0fff
  452.     dc.w    $0194,$0eee
  453.     dc.w    $0196,$0ddd    
  454.     dc.w    $0198,$0ccc
  455.     dc.w    $019a,$0bbb
  456.     dc.w    $019c,$0aaa
  457.     dc.w    $019e,$0999
  458.     dc.w    $0180,$0003    ;poo
  459.     dc.w    $0186,$008a
  460.     dc.w    $0188,$0059
  461.     dc.w    $018a,$0038
  462.     dc.w    $018c,$0016
  463.     dc.w    $018e,$0004
  464.     dc.w    $0182,$00ff
  465.     dc.w    $0184,$00bd
  466.  
  467.     dc.w    $ac01,$fffe
  468.     DC.W    $0100,$4200
  469. ref:    DC.W    $00e0,$0000,$00e2,$0000
  470.     DC.W    $00e4,$0000,$00e6,$0000
  471.     DC.W    $00e8,$0000,$00ea,$0000
  472. bpln1:    DC.W    $00ec,$0000,$00ee,$0000
  473.  
  474.     dc.w    $ad01,$fffe
  475.     DC.W    $00e0,$0000,$00e2,$0000
  476.     DC.W    $00e4,$0000,$00e6,$0000
  477.     DC.W    $00e8,$0000,$00ea,$0000
  478. bpln2:    DC.W    $00ec,$0000,$00ee,$0000
  479.  
  480.     dc.w    $ae01,$fffe
  481.     DC.W    $00e0,$0000,$00e2,$0000
  482.     DC.W    $00e4,$0000,$00e6,$0000
  483.     DC.W    $00e8,$0000,$00ea,$0000
  484. bpln3:    DC.W    $00ec,$0000,$00ee,$0000
  485.  
  486.     dc.w    $af01,$fffe
  487.     DC.W    $00e0,$0000,$00e2,$0000
  488.     DC.W    $00e4,$0000,$00e6,$0000
  489.     DC.W    $00e8,$0000,$00ea,$0000
  490. bpln4:    DC.W    $00ec,$0000,$00ee,$0000
  491.  
  492.     dc.w    $b001,$fffe
  493.     DC.W    $00e0,$0000,$00e2,$0000
  494.     DC.W    $00e4,$0000,$00e6,$0000
  495.     DC.W    $00e8,$0000,$00ea,$0000
  496. bpln5:    DC.W    $00ec,$0000,$00ee,$0000
  497.  
  498.     dc.w    $b101,$fffe
  499.     DC.W    $00e0,$0000,$00e2,$0000
  500.     DC.W    $00e4,$0000,$00e6,$0000
  501.     DC.W    $00e8,$0000,$00ea,$0000
  502. bpln6:    DC.W    $00ec,$0000,$00ee,$0000
  503.  
  504.     dc.w    $b201,$fffe
  505.     DC.W    $00e0,$0000,$00e2,$0000
  506.     DC.W    $00e4,$0000,$00e6,$0000
  507.     DC.W    $00e8,$0000,$00ea,$0000
  508. bpln7:    DC.W    $00ec,$0000,$00ee,$0000
  509.  
  510.     dc.w    $b301,$fffe
  511.     DC.W    $00e0,$0000,$00e2,$0000
  512.     DC.W    $00e4,$0000,$00e6,$0000
  513.     DC.W    $00e8,$0000,$00ea,$0000
  514. bpln8:    DC.W    $00ec,$0000,$00ee,$0000
  515.  
  516.     dc.w    $b401,$fffe
  517.     DC.W    $00e0,$0000,$00e2,$0000
  518.     DC.W    $00e4,$0000,$00e6,$0000
  519.     DC.W    $00e8,$0000,$00ea,$0000
  520. bpln9:    DC.W    $00ec,$0000,$00ee,$0000
  521.  
  522.     dc.w    $b501,$fffe
  523.     DC.W    $00e0,$0000,$00e2,$0000
  524.     DC.W    $00e4,$0000,$00e6,$0000
  525.     DC.W    $00e8,$0000,$00ea,$0000
  526. bplna:    DC.W    $00ec,$0000,$00ee,$0000
  527.  
  528.     dc.w    $b601,$fffe
  529.     DC.W    $00e0,$0000,$00e2,$0000
  530.     DC.W    $00e4,$0000,$00e6,$0000
  531.     DC.W    $00e8,$0000,$00ea,$0000
  532. bplnb:    DC.W    $00ec,$0000,$00ee,$0000
  533.  
  534.     dc.w    $b701,$fffe
  535.     DC.W    $00e0,$0000,$00e2,$0000
  536.     DC.W    $00e4,$0000,$00e6,$0000
  537.     DC.W    $00e8,$0000,$00ea,$0000
  538. bplnc:    DC.W    $00ec,$0000,$00ee,$0000
  539.  
  540.     dc.w    $b801,$fffe
  541.     DC.W    $00e0,$0000,$00e2,$0000
  542.     DC.W    $00e4,$0000,$00e6,$0000
  543.     DC.W    $00e8,$0000,$00ea,$0000
  544. bplnd:    DC.W    $00ec,$0000,$00ee,$0000
  545.  
  546.     dc.w    $b901,$fffe
  547.     DC.W    $00e0,$0000,$00e2,$0000
  548.     DC.W    $00e4,$0000,$00e6,$0000
  549.     DC.W    $00e8,$0000,$00ea,$0000
  550. bplne:    DC.W    $00ec,$0000,$00ee,$0000
  551.  
  552.     dc.w    $ba01,$fffe
  553.     DC.W    $00e0,$0000,$00e2,$0000
  554.     DC.W    $00e4,$0000,$00e6,$0000
  555.     DC.W    $00e8,$0000,$00ea,$0000
  556. bplnf:    DC.W    $00ec,$0000,$00ee,$0000
  557.  
  558.     dc.w    $bb01,$fffe
  559.     DC.W    $00e0,$0000,$00e2,$0000
  560.     DC.W    $00e4,$0000,$00e6,$0000
  561.     DC.W    $00e8,$0000,$00ea,$0000
  562. bpln10:    DC.W    $00ec,$0000,$00ee,$0000
  563.  
  564.     dc.w    $bc01,$fffe
  565.     DC.W    $00e0,$0000,$00e2,$0000
  566.     DC.W    $00e4,$0000,$00e6,$0000
  567.     DC.W    $00e8,$0000,$00ea,$0000
  568. bpln11:    DC.W    $00ec,$0000,$00ee,$0000
  569.  
  570.     dc.w    $bd01,$fffe
  571.     DC.W    $00e0,$0000,$00e2,$0000
  572.     DC.W    $00e4,$0000,$00e6,$0000
  573.     DC.W    $00e8,$0000,$00ea,$0000
  574. bpln12:    DC.W    $00ec,$0000,$00ee,$0000
  575.  
  576.     dc.w    $be01,$fffe
  577.     DC.W    $00e0,$0000,$00e2,$0000
  578.     DC.W    $00e4,$0000,$00e6,$0000
  579.     DC.W    $00e8,$0000,$00ea,$0000
  580. bpln13:    DC.W    $00ec,$0000,$00ee,$0000
  581.  
  582.     dc.w    $bf01,$fffe
  583.     DC.W    $00e0,$0000,$00e2,$0000
  584.     DC.W    $00e4,$0000,$00e6,$0000
  585.     DC.W    $00e8,$0000,$00ea,$0000
  586. bpln14:    DC.W    $00ec,$0000,$00ee,$0000
  587.  
  588.     dc.w    $c001,$fffe
  589.     DC.W    $00e0,$0000,$00e2,$0000
  590.     DC.W    $00e4,$0000,$00e6,$0000
  591.     DC.W    $00e8,$0000,$00ea,$0000
  592. bpln15:    DC.W    $00ec,$0000,$00ee,$0000
  593.  
  594.     dc.w    $c101,$fffe
  595.     DC.W    $00e0,$0000,$00e2,$0000
  596.     DC.W    $00e4,$0000,$00e6,$0000
  597.     DC.W    $00e8,$0000,$00ea,$0000
  598. bpln16:    DC.W    $00ec,$0000,$00ee,$0000
  599.  
  600.     dc.w    $c201,$fffe
  601.     DC.W    $00e0,$0000,$00e2,$0000
  602.     DC.W    $00e4,$0000,$00e6,$0000
  603.     DC.W    $00e8,$0000,$00ea,$0000
  604. bpln17:    DC.W    $00ec,$0000,$00ee,$0000
  605.  
  606.     dc.w    $c301,$fffe
  607.     DC.W    $00e0,$0000,$00e2,$0000
  608.     DC.W    $00e4,$0000,$00e6,$0000
  609.     DC.W    $00e8,$0000,$00ea,$0000
  610. bpln18:    DC.W    $00ec,$0000,$00ee,$0000
  611.  
  612.     dc.w    $c401,$fffe
  613.     DC.W    $00e0,$0000,$00e2,$0000
  614.     DC.W    $00e4,$0000,$00e6,$0000
  615.     DC.W    $00e8,$0000,$00ea,$0000
  616. bpln19:    DC.W    $00ec,$0000,$00ee,$0000
  617.  
  618.     dc.w    $c501,$fffe
  619.     DC.W    $00e0,$0000,$00e2,$0000
  620.     DC.W    $00e4,$0000,$00e6,$0000
  621.     DC.W    $00e8,$0000,$00ea,$0000
  622. bpln1a:    DC.W    $00ec,$0000,$00ee,$0000
  623.  
  624.     dc.w    $c601,$fffe
  625.     DC.W    $00e0,$0000,$00e2,$0000
  626.     DC.W    $00e4,$0000,$00e6,$0000
  627.     DC.W    $00e8,$0000,$00ea,$0000
  628. bpln1b:    DC.W    $00ec,$0000,$00ee,$0000
  629.  
  630.     dc.w    $c701,$fffe
  631.     DC.W    $00e0,$0000,$00e2,$0000
  632.     DC.W    $00e4,$0000,$00e6,$0000
  633.     DC.W    $00e8,$0000,$00ea,$0000
  634. bpln1c:    DC.W    $00ec,$0000,$00ee,$0000
  635.  
  636.     dc.w    $c801,$fffe
  637.     DC.W    $00e0,$0000,$00e2,$0000
  638.     DC.W    $00e4,$0000,$00e6,$0000
  639.     DC.W    $00e8,$0000,$00ea,$0000
  640. bpln1d:    DC.W    $00ec,$0000,$00ee,$0000
  641.  
  642.     dc.w    $c901,$fffe
  643.     DC.W    $00e0,$0000,$00e2,$0000
  644.     DC.W    $00e4,$0000,$00e6,$0000
  645.     DC.W    $00e8,$0000,$00ea,$0000
  646. bpln1e:    DC.W    $00ec,$0000,$00ee,$0000
  647.  
  648.     dc.w    $ca01,$fffe
  649.     DC.W    $00e0,$0000,$00e2,$0000
  650.     DC.W    $00e4,$0000,$00e6,$0000
  651.     DC.W    $00e8,$0000,$00ea,$0000
  652. bpln1f:    DC.W    $00ec,$0000,$00ee,$0000
  653.  
  654.     dc.w    $cb01,$fffe
  655.     DC.W    $00e0,$0000,$00e2,$0000
  656.     DC.W    $00e4,$0000,$00e6,$0000
  657.     DC.W    $00e8,$0000,$00ea,$0000
  658. bpln20:    DC.W    $00ec,$0000,$00ee,$0000
  659.  
  660.     dc.w    $cc01,$fffe
  661.     DC.W    $00e0,$0000,$00e2,$0000
  662.     DC.W    $00e4,$0000,$00e6,$0000
  663.     DC.W    $00e8,$0000,$00ea,$0000
  664. bpln21:    DC.W    $00ec,$0000,$00ee,$0000
  665.  
  666.     dc.w    $cd01,$fffe
  667.     DC.W    $00e0,$0000,$00e2,$0000
  668.     DC.W    $00e4,$0000,$00e6,$0000
  669.     DC.W    $00e8,$0000,$00ea,$0000
  670. bpln22:    DC.W    $00ec,$0000,$00ee,$0000
  671.  
  672.     dc.w    $ce01,$fffe
  673.     DC.W    $00e0,$0000,$00e2,$0000
  674.     DC.W    $00e4,$0000,$00e6,$0000
  675.     DC.W    $00e8,$0000,$00ea,$0000
  676. bpln23:    DC.W    $00ec,$0000,$00ee,$0000
  677.  
  678.     dc.w    $cf01,$fffe
  679.     DC.W    $00e0,$0000,$00e2,$0000
  680.     DC.W    $00e4,$0000,$00e6,$0000
  681.     DC.W    $00e8,$0000,$00ea,$0000
  682. bpln24:    DC.W    $00ec,$0000,$00ee,$0000
  683.  
  684.     dc.w    $d001,$fffe
  685.     DC.W    $00e0,$0000,$00e2,$0000
  686.     DC.W    $00e4,$0000,$00e6,$0000
  687.     DC.W    $00e8,$0000,$00ea,$0000
  688. bpln25:    DC.W    $00ec,$0000,$00ee,$0000
  689.  
  690.     dc.w    $d101,$fffe
  691.     DC.W    $00e0,$0000,$00e2,$0000
  692.     DC.W    $00e4,$0000,$00e6,$0000
  693.     DC.W    $00e8,$0000,$00ea,$0000
  694. bpln26:    DC.W    $00ec,$0000,$00ee,$0000
  695.  
  696.     dc.w    $d201,$fffe
  697.     DC.W    $00e0,$0000,$00e2,$0000
  698.     DC.W    $00e4,$0000,$00e6,$0000
  699.     DC.W    $00e8,$0000,$00ea,$0000
  700. bpln27:    DC.W    $00ec,$0000,$00ee,$0000
  701.  
  702.     dc.w    $d301,$fffe
  703.     DC.W    $00e0,$0000,$00e2,$0000
  704.     DC.W    $00e4,$0000,$00e6,$0000
  705.     DC.W    $00e8,$0000,$00ea,$0000
  706. bpln28:    DC.W    $00ec,$0000,$00ee,$0000
  707.  
  708.     dc.w    $d401,$fffe
  709.     DC.W    $00e0,$0000,$00e2,$0000
  710.     DC.W    $00e4,$0000,$00e6,$0000
  711.     DC.W    $00e8,$0000,$00ea,$0000
  712. bpln29:    DC.W    $00ec,$0000,$00ee,$0000
  713.  
  714.     dc.w    $d501,$fffe
  715.     DC.W    $00e0,$0000,$00e2,$0000
  716.     DC.W    $00e4,$0000,$00e6,$0000
  717.     DC.W    $00e8,$0000,$00ea,$0000
  718. bpln2a:    DC.W    $00ec,$0000,$00ee,$0000
  719.  
  720.     dc.w    $d601,$fffe
  721.     DC.W    $00e0,$0000,$00e2,$0000
  722.     DC.W    $00e4,$0000,$00e6,$0000
  723.     DC.W    $00e8,$0000,$00ea,$0000
  724. bpln2b:    DC.W    $00ec,$0000,$00ee,$0000
  725.  
  726.     dc.w    $d701,$fffe
  727.     DC.W    $00e0,$0000,$00e2,$0000
  728.     DC.W    $00e4,$0000,$00e6,$0000
  729.     DC.W    $00e8,$0000,$00ea,$0000
  730. bpln2c:    DC.W    $00ec,$0000,$00ee,$0000
  731.  
  732.     dc.w    $d801,$fffe
  733.     DC.W    $00e0,$0000,$00e2,$0000
  734.     DC.W    $00e4,$0000,$00e6,$0000
  735.     DC.W    $00e8,$0000,$00ea,$0000
  736. bpln2d:    DC.W    $00ec,$0000,$00ee,$0000
  737.  
  738.     dc.w    $d901,$fffe
  739.     DC.W    $00e0,$0000,$00e2,$0000
  740.     DC.W    $00e4,$0000,$00e6,$0000
  741.     DC.W    $00e8,$0000,$00ea,$0000
  742. bpln2e:    DC.W    $00ec,$0000,$00ee,$0000
  743.  
  744.     dc.w    $da01,$fffe
  745.     DC.W    $00e0,$0000,$00e2,$0000
  746.     DC.W    $00e4,$0000,$00e6,$0000
  747.     DC.W    $00e8,$0000,$00ea,$0000
  748. bpln2f:    DC.W    $00ec,$0000,$00ee,$0000
  749.  
  750.     dc.w    $db01,$fffe
  751.     DC.W    $00e0,$0000,$00e2,$0000
  752.     DC.W    $00e4,$0000,$00e6,$0000
  753.     DC.W    $00e8,$0000,$00ea,$0000
  754. bpln30:    DC.W    $00ec,$0000,$00ee,$0000
  755.  
  756.     dc.w    $dc01,$fffe
  757.     DC.W    $00e0,$0000,$00e2,$0000
  758.     DC.W    $00e4,$0000,$00e6,$0000
  759.     DC.W    $00e8,$0000,$00ea,$0000
  760. bpln31:    DC.W    $00ec,$0000,$00ee,$0000
  761.  
  762.     dc.w    $dd01,$fffe
  763.     DC.W    $00e0,$0000,$00e2,$0000
  764.     DC.W    $00e4,$0000,$00e6,$0000
  765.     DC.W    $00e8,$0000,$00ea,$0000
  766. bpln32:    DC.W    $00ec,$0000,$00ee,$0000
  767.  
  768.     dc.w    $de01,$fffe
  769.     DC.W    $00e0,$0000,$00e2,$0000
  770.     DC.W    $00e4,$0000,$00e6,$0000
  771.     DC.W    $00e8,$0000,$00ea,$0000
  772. bpln33:    DC.W    $00ec,$0000,$00ee,$0000
  773.  
  774.     dc.w    $df01,$fffe
  775.     DC.W    $00e0,$0000,$00e2,$0000
  776.     DC.W    $00e4,$0000,$00e6,$0000
  777.     DC.W    $00e8,$0000,$00ea,$0000
  778. bpln34:    DC.W    $00ec,$0000,$00ee,$0000
  779.  
  780.     dc.w    $e001,$fffe
  781.     DC.W    $00e0,$0000,$00e2,$0000
  782.     DC.W    $00e4,$0000,$00e6,$0000
  783.     DC.W    $00e8,$0000,$00ea,$0000
  784. bpln35:    DC.W    $00ec,$0000,$00ee,$0000
  785.  
  786.     dc.w    $e101,$fffe
  787.     DC.W    $00e0,$0000,$00e2,$0000
  788.     DC.W    $00e4,$0000,$00e6,$0000
  789.     DC.W    $00e8,$0000,$00ea,$0000
  790. bpln36:    DC.W    $00ec,$0000,$00ee,$0000
  791.  
  792.     dc.w    $e201,$fffe
  793.     DC.W    $00e0,$0000,$00e2,$0000
  794.     DC.W    $00e4,$0000,$00e6,$0000
  795.     DC.W    $00e8,$0000,$00ea,$0000
  796. bpln37:    DC.W    $00ec,$0000,$00ee,$0000
  797.  
  798.  
  799.     dc.w    $e301,$fffe
  800.     DC.W    $00e0,$0000,$00e2,$0000
  801.     DC.W    $00e4,$0000,$00e6,$0000
  802.     DC.W    $00e8,$0000,$00ea,$0000
  803. bpln38:    DC.W    $00ec,$0000,$00ee,$0000
  804.  
  805.  
  806.     dc.w    $e401,$fffe
  807.     DC.W    $00e0,$0000,$00e2,$0000
  808.     DC.W    $00e4,$0000,$00e6,$0000
  809.     DC.W    $00e8,$0000,$00ea,$0000
  810. bpln39:    DC.W    $00ec,$0000,$00ee,$0000
  811.  
  812.     dc.w    $e501,$fffe
  813.     DC.W    $00e0,$0000,$00e2,$0000
  814.     DC.W    $00e4,$0000,$00e6,$0000
  815.     DC.W    $00e8,$0000,$00ea,$0000
  816. bpln3a:    DC.W    $00ec,$0000,$00ee,$0000
  817.  
  818.     dc.w    $e601,$fffe
  819.     DC.W    $00e0,$0000,$00e2,$0000
  820.     DC.W    $00e4,$0000,$00e6,$0000
  821.     DC.W    $00e8,$0000,$00ea,$0000
  822. bpln3b:    DC.W    $00ec,$0000,$00ee,$0000
  823.  
  824.     dc.w    $0182,$0fff
  825.     dc.w    $0184,$0e0e 
  826.     dc.w    $0186,$0c0c 
  827.     dc.w    $0188,$0a0a 
  828.     dc.w    $018a,$0909 
  829.     dc.w    $018c,$0707 
  830.     dc.w    $018e,$0fa0
  831.     dc.w    $0192,$0fff
  832.     dc.w    $0194,$0e0e
  833.     dc.w    $0196,$0c0c
  834.     dc.w    $0198,$0a0a
  835.     dc.w    $019a,$0909
  836.     dc.w    $019c,$0707
  837.     dc.w    $019e,$0fa0
  838.  
  839.  
  840.     dc.w    $e701,$fffe
  841. ref3:    DC.W    $00e0,$0000,$00e2,$0000
  842.     DC.W    $00e4,$0000,$00e6,$0000
  843.     DC.W    $00e8,$0000,$00ea,$0000
  844. bpln3c:    DC.W    $00ec,$0000,$00ee,$0000
  845.  
  846.     dc.w    $e801,$fffe
  847.     DC.W    $00e0,$0000,$00e2,$0000
  848.     DC.W    $00e4,$0000,$00e6,$0000
  849.     DC.W    $00e8,$0000,$00ea,$0000
  850. bpln3d:    DC.W    $00ec,$0000,$00ee,$0000
  851.  
  852.     dc.w    $e901,$fffe
  853.     DC.W    $00e0,$0000,$00e2,$0000
  854.     DC.W    $00e4,$0000,$00e6,$0000
  855.     DC.W    $00e8,$0000,$00ea,$0000
  856. bpln3e:    DC.W    $00ec,$0000,$00ee,$0000
  857.  
  858.     dc.w    $ea01,$fffe
  859.     DC.W    $00e0,$0000,$00e2,$0000
  860.     DC.W    $00e4,$0000,$00e6,$0000
  861.     DC.W    $00e8,$0000,$00ea,$0000
  862. bpln3f:    DC.W    $00ec,$0000,$00ee,$0000
  863.  
  864.     dc.w    $eb01,$fffe
  865.     DC.W    $00e0,$0000,$00e2,$0000
  866.     DC.W    $00e4,$0000,$00e6,$0000
  867.     DC.W    $00e8,$0000,$00ea,$0000
  868. bpln40:    DC.W    $00ec,$0000,$00ee,$0000
  869.  
  870.     dc.w    $ec01,$fffe
  871.     DC.W    $00e0,$0000,$00e2,$0000
  872.     DC.W    $00e4,$0000,$00e6,$0000
  873.     DC.W    $00e8,$0000,$00ea,$0000
  874. bpln41:    DC.W    $00ec,$0000,$00ee,$0000
  875.  
  876.     dc.w    $ed01,$fffe
  877.     DC.W    $00e0,$0000,$00e2,$0000
  878.     DC.W    $00e4,$0000,$00e6,$0000
  879.     DC.W    $00e8,$0000,$00ea,$0000
  880. bpln42:    DC.W    $00ec,$0000,$00ee,$0000
  881.  
  882.     dc.w    $ee01,$fffe
  883.     DC.W    $00e0,$0000,$00e2,$0000
  884.     DC.W    $00e4,$0000,$00e6,$0000
  885.     DC.W    $00e8,$0000,$00ea,$0000
  886. bpln43:    DC.W    $00ec,$0000,$00ee,$0000
  887.  
  888.     dc.w    $ef01,$fffe
  889.     DC.W    $00e0,$0000,$00e2,$0000
  890.     DC.W    $00e4,$0000,$00e6,$0000
  891.     DC.W    $00e8,$0000,$00ea,$0000
  892. bpln44:    DC.W    $00ec,$0000,$00ee,$0000
  893.  
  894.     dc.w    $f001,$fffe
  895.     DC.W    $00e0,$0000,$00e2,$0000
  896.     DC.W    $00e4,$0000,$00e6,$0000
  897.     DC.W    $00e8,$0000,$00ea,$0000
  898. bpln45:    DC.W    $00ec,$0000,$00ee,$0000
  899.  
  900.     dc.w    $f101,$fffe
  901.     DC.W    $00e0,$0000,$00e2,$0000
  902.     DC.W    $00e4,$0000,$00e6,$0000
  903.     DC.W    $00e8,$0000,$00ea,$0000
  904. bpln46:    DC.W    $00ec,$0000,$00ee,$0000
  905.  
  906.     dc.w    $f201,$fffe
  907.     DC.W    $00e0,$0000,$00e2,$0000
  908.     DC.W    $00e4,$0000,$00e6,$0000
  909.     DC.W    $00e8,$0000,$00ea,$0000
  910. bpln47:    DC.W    $00ec,$0000,$00ee,$0000
  911.  
  912.     dc.w    $f301,$fffe
  913.     DC.W    $00e0,$0000,$00e2,$0000
  914.     DC.W    $00e4,$0000,$00e6,$0000
  915.     DC.W    $00e8,$0000,$00ea,$0000
  916. bpln48:    DC.W    $00ec,$0000,$00ee,$0000
  917.  
  918.     dc.w    $f401,$fffe
  919.     DC.W    $00e0,$0000,$00e2,$0000
  920.     DC.W    $00e4,$0000,$00e6,$0000
  921.     DC.W    $00e8,$0000,$00ea,$0000
  922. bpln49:    DC.W    $00ec,$0000,$00ee,$0000
  923.  
  924.     dc.w    $f501,$fffe
  925.     DC.W    $00e0,$0000,$00e2,$0000
  926.     DC.W    $00e4,$0000,$00e6,$0000
  927.     DC.W    $00e8,$0000,$00ea,$0000
  928. bpln4a:    DC.W    $00ec,$0000,$00ee,$0000
  929.  
  930.     dc.w    $f601,$fffe
  931.     DC.W    $00e0,$0000,$00e2,$0000
  932.     DC.W    $00e4,$0000,$00e6,$0000
  933.     DC.W    $00e8,$0000,$00ea,$0000
  934. bpln4b:    DC.W    $00ec,$0000,$00ee,$0000
  935.  
  936.     dc.w    $f701,$fffe
  937.     DC.W    $00e0,$0000,$00e2,$0000
  938.     DC.W    $00e4,$0000,$00e6,$0000
  939.     DC.W    $00e8,$0000,$00ea,$0000
  940. bpln4c:    DC.W    $00ec,$0000,$00ee,$0000
  941.  
  942.     dc.w    $f801,$fffe
  943.     DC.W    $00e0,$0000,$00e2,$0000
  944.     DC.W    $00e4,$0000,$00e6,$0000
  945.     DC.W    $00e8,$0000,$00ea,$0000
  946. bpln4d:    DC.W    $00ec,$0000,$00ee,$0000
  947.  
  948.     dc.w    $f901,$fffe
  949.     DC.W    $00e0,$0000,$00e2,$0000
  950.     DC.W    $00e4,$0000,$00e6,$0000
  951.     DC.W    $00e8,$0000,$00ea,$0000
  952. bpln4e:    DC.W    $00ec,$0000,$00ee,$0000
  953.  
  954.     dc.w    $fa01,$fffe
  955.     DC.W    $00e0,$0000,$00e2,$0000
  956.     DC.W    $00e4,$0000,$00e6,$0000
  957.     DC.W    $00e8,$0000,$00ea,$0000
  958. bpln4f:    DC.W    $00ec,$0000,$00ee,$0000
  959.  
  960.     dc.w    $fb01,$fffe
  961.     DC.W    $00e0,$0000,$00e2,$0000
  962.     DC.W    $00e4,$0000,$00e6,$0000
  963.     DC.W    $00e8,$0000,$00ea,$0000
  964. bpln50:    DC.W    $00ec,$0000,$00ee,$0000
  965.  
  966.     dc.w    $fc01,$fffe
  967.     DC.W    $00e0,$0000,$00e2,$0000
  968.     DC.W    $00e4,$0000,$00e6,$0000
  969.     DC.W    $00e8,$0000,$00ea,$0000
  970. bpln51:    DC.W    $00ec,$0000,$00ee,$0000
  971.  
  972.     dc.w    $fd01,$fffe
  973.     DC.W    $00e0,$0000,$00e2,$0000
  974.     DC.W    $00e4,$0000,$00e6,$0000
  975.     DC.W    $00e8,$0000,$00ea,$0000
  976. bpln52:    DC.W    $00ec,$0000,$00ee,$0000
  977.  
  978.     dc.w    $fe01,$fffe
  979.     DC.W    $00e0,$0000,$00e2,$0000
  980.     DC.W    $00e4,$0000,$00e6,$0000
  981.     DC.W    $00e8,$0000,$00ea,$0000
  982. bpln53:    DC.W    $00ec,$0000,$00ee,$0000
  983.  
  984.     dc.w    $ff01,$fffe
  985.     DC.W    $00e0,$0000,$00e2,$0000
  986.     DC.W    $00e4,$0000,$00e6,$0000
  987.     DC.W    $00e8,$0000,$00ea,$0000
  988. bpln54:    DC.W    $00ec,$0000,$00ee,$0000
  989.     dc.w    $ffdf,$fffe    
  990.  
  991.     dc.w    $0001,$fffe
  992. ref2:    DC.W    $00e0,$0000,$00e2,$0000
  993.     DC.W    $00e4,$0000,$00e6,$0000
  994.     DC.W    $00e8,$0000,$00ea,$0000
  995. bpln55:    DC.W    $00ec,$0000,$00ee,$0000
  996.  
  997.     dc.w    $0182,$0888        ;black
  998.     dc.w    $0184,$0607 
  999.     dc.w    $0186,$0506 
  1000.     dc.w    $0188,$0405 
  1001.     dc.w    $018a,$0304 
  1002.     dc.w    $018c,$0203 
  1003.     dc.w    $018e,$0840
  1004.  
  1005.     dc.w    $0192,$0fff
  1006.     dc.w    $0194,$0eae 
  1007.     dc.w    $0196,$0c9c 
  1008.     dc.w    $0198,$0a8a 
  1009.     dc.w    $019a,$0979 
  1010.     dc.w    $019c,$0767 
  1011.     dc.w    $019e,$0fa4
  1012.  
  1013.     dc.w    $0101,$fffe
  1014. ref4:    DC.W    $00e0,$0000,$00e2,$0000
  1015.     DC.W    $00e4,$0000,$00e6,$0000
  1016.     DC.W    $00e8,$0000,$00ea,$0000
  1017. bpln56:    DC.W    $00ec,$0000,$00ee,$0000
  1018.  
  1019.     dc.w    $0201,$fffe
  1020.     DC.W    $00e0,$0000,$00e2,$0000
  1021.     DC.W    $00e4,$0000,$00e6,$0000
  1022.     DC.W    $00e8,$0000,$00ea,$0000
  1023. bpln57:    DC.W    $00ec,$0000,$00ee,$0000
  1024.  
  1025.     dc.w    $0301,$fffe
  1026.     DC.W    $00e0,$0000,$00e2,$0000
  1027.     DC.W    $00e4,$0000,$00e6,$0000
  1028.     DC.W    $00e8,$0000,$00ea,$0000
  1029. bpln58:    DC.W    $00ec,$0000,$00ee,$0000
  1030.  
  1031.     dc.w    $0401,$fffe
  1032.     DC.W    $00e0,$0000,$00e2,$0000
  1033.     DC.W    $00e4,$0000,$00e6,$0000
  1034.     DC.W    $00e8,$0000,$00ea,$0000
  1035. bpln59:    DC.W    $00ec,$0000,$00ee,$0000
  1036.  
  1037.     dc.w    $0501,$fffe
  1038.     DC.W    $00e0,$0000,$00e2,$0000
  1039.     DC.W    $00e4,$0000,$00e6,$0000
  1040.     DC.W    $00e8,$0000,$00ea,$0000
  1041. bpln5a:    DC.W    $00ec,$0000,$00ee,$0000
  1042.  
  1043.     dc.w    $0601,$fffe
  1044.     DC.W    $00e0,$0000,$00e2,$0000
  1045.     DC.W    $00e4,$0000,$00e6,$0000
  1046.     DC.W    $00e8,$0000,$00ea,$0000
  1047. bpln5b:    DC.W    $00ec,$0000,$00ee,$0000
  1048.  
  1049.     dc.w    $0701,$fffe
  1050.     DC.W    $00e0,$0000,$00e2,$0000
  1051.     DC.W    $00e4,$0000,$00e6,$0000
  1052.     DC.W    $00e8,$0000,$00ea,$0000
  1053. bpln5c:    DC.W    $00ec,$0000,$00ee,$0000
  1054.  
  1055.     dc.w    $0801,$fffe
  1056.     DC.W    $00e0,$0000,$00e2,$0000
  1057.     DC.W    $00e4,$0000,$00e6,$0000
  1058.     DC.W    $00e8,$0000,$00ea,$0000
  1059. bpln5d:    DC.W    $00ec,$0000,$00ee,$0000
  1060.  
  1061.     dc.w    $0901,$fffe
  1062.     DC.W    $00e0,$0000,$00e2,$0000
  1063.     DC.W    $00e4,$0000,$00e6,$0000
  1064.     DC.W    $00e8,$0000,$00ea,$0000
  1065. bpln5e:    DC.W    $00ec,$0000,$00ee,$0000
  1066.  
  1067.     dc.w    $0a01,$fffe
  1068.     DC.W    $00e0,$0000,$00e2,$0000
  1069.     DC.W    $00e4,$0000,$00e6,$0000
  1070.     DC.W    $00e8,$0000,$00ea,$0000
  1071. bpln5f:    DC.W    $00ec,$0000,$00ee,$0000
  1072.  
  1073.     dc.w    $0b01,$fffe
  1074.     DC.W    $00e0,$0000,$00e2,$0000
  1075.     DC.W    $00e4,$0000,$00e6,$0000
  1076.     DC.W    $00e8,$0000,$00ea,$0000
  1077. bpln60:    DC.W    $00ec,$0000,$00ee,$0000
  1078.  
  1079.     dc.w    $0c01,$fffe
  1080.     DC.W    $00e0,$0000,$00e2,$0000
  1081.     DC.W    $00e4,$0000,$00e6,$0000
  1082.     DC.W    $00e8,$0000,$00ea,$0000
  1083. bpln61:    DC.W    $00ec,$0000,$00ee,$0000
  1084.  
  1085.     dc.w    $0d01,$fffe
  1086.     DC.W    $00e0,$0000,$00e2,$0000
  1087.     DC.W    $00e4,$0000,$00e6,$0000
  1088.     DC.W    $00e8,$0000,$00ea,$0000
  1089. bpln62:    DC.W    $00ec,$0000,$00ee,$0000
  1090.  
  1091.     dc.w    $0e01,$fffe
  1092.     DC.W    $00e0,$0000,$00e2,$0000
  1093.     DC.W    $00e4,$0000,$00e6,$0000
  1094.     DC.W    $00e8,$0000,$00ea,$0000
  1095. bpln63:    DC.W    $00ec,$0000,$00ee,$0000
  1096.  
  1097.     dc.w    $0f01,$fffe
  1098.     DC.W    $00e0,$0000,$00e2,$0000
  1099.     DC.W    $00e4,$0000,$00e6,$0000
  1100.     DC.W    $00e8,$0000,$00ea,$0000
  1101. bpln64:    DC.W    $00ec,$0000,$00ee,$0000
  1102.  
  1103.     dc.w    $1001,$fffe
  1104.     DC.W    $00e0,$0000,$00e2,$0000
  1105.     DC.W    $00e4,$0000,$00e6,$0000
  1106.     DC.W    $00e8,$0000,$00ea,$0000
  1107. bpln65:    DC.W    $00ec,$0000,$00ee,$0000
  1108.  
  1109.     dc.w    $1101,$fffe
  1110.     DC.W    $00e0,$0000,$00e2,$0000
  1111.     DC.W    $00e4,$0000,$00e6,$0000
  1112.     DC.W    $00e8,$0000,$00ea,$0000
  1113. bpln66:    DC.W    $00ec,$0000,$00ee,$0000
  1114.  
  1115.     dc.w    $1201,$fffe
  1116.     DC.W    $00e0,$0000,$00e2,$0000
  1117.     DC.W    $00e4,$0000,$00e6,$0000
  1118.     DC.W    $00e8,$0000,$00ea,$0000
  1119. bpln67:    DC.W    $00ec,$0000,$00ee,$0000
  1120.  
  1121.     dc.w    $1301,$fffe
  1122.     DC.W    $00e0,$0000,$00e2,$0000
  1123.     DC.W    $00e4,$0000,$00e6,$0000
  1124.     DC.W    $00e8,$0000,$00ea,$0000
  1125. bpln68:    DC.W    $00ec,$0000,$00ee,$0000
  1126.  
  1127.     dc.w    $1401,$fffe
  1128.     DC.W    $00e0,$0000,$00e2,$0000
  1129.     DC.W    $00e4,$0000,$00e6,$0000
  1130.     DC.W    $00e8,$0000,$00ea,$0000
  1131. bpln69:    DC.W    $00ec,$0000,$00ee,$0000
  1132.  
  1133.     dc.w    $1501,$fffe
  1134.     DC.W    $00e0,$0000,$00e2,$0000
  1135.     DC.W    $00e4,$0000,$00e6,$0000
  1136.     DC.W    $00e8,$0000,$00ea,$0000
  1137. bpln6a:    DC.W    $00ec,$0000,$00ee,$0000
  1138.  
  1139.     dc.w    $1601,$fffe
  1140.     DC.W    $00e0,$0000,$00e2,$0000
  1141.     DC.W    $00e4,$0000,$00e6,$0000
  1142.     DC.W    $00e8,$0000,$00ea,$0000
  1143. bpln6b:    DC.W    $00ec,$0000,$00ee,$0000
  1144.  
  1145.     dc.w    $1701,$fffe
  1146.     DC.W    $00e0,$0000,$00e2,$0000
  1147.     DC.W    $00e4,$0000,$00e6,$0000
  1148.     DC.W    $00e8,$0000,$00ea,$0000
  1149. bpln6c:    DC.W    $00ec,$0000,$00ee,$0000
  1150.  
  1151.     dc.w    $1801,$fffe
  1152.     DC.W    $00e0,$0000,$00e2,$0000
  1153.     DC.W    $00e4,$0000,$00e6,$0000
  1154.     DC.W    $00e8,$0000,$00ea,$0000
  1155. bpln6d:    DC.W    $00ec,$0000,$00ee,$0000
  1156.  
  1157.     dc.w    $1901,$fffe
  1158.     DC.W    $00e0,$0000,$00e2,$0000
  1159.     DC.W    $00e4,$0000,$00e6,$0000
  1160.     DC.W    $00e8,$0000,$00ea,$0000
  1161. bpln6e:    DC.W    $00ec,$0000,$00ee,$0000
  1162.  
  1163.     dc.w    $1a01,$fffe
  1164.     DC.W    $00e0,$0000,$00e2,$0000
  1165.     DC.W    $00e4,$0000,$00e6,$0000
  1166.     DC.W    $00e8,$0000,$00ea,$0000
  1167. bpln6f:    DC.W    $00ec,$0000,$00ee,$0000
  1168.  
  1169.     dc.w    $1b01,$fffe
  1170.     DC.W    $00e0,$0000,$00e2,$0000
  1171.     DC.W    $00e4,$0000,$00e6,$0000
  1172.     DC.W    $00e8,$0000,$00ea,$0000
  1173. bpln70:    DC.W    $00ec,$0000,$00ee,$0000
  1174.  
  1175.     dc.w    $1c01,$fffe
  1176.     DC.W    $00e0,$0000,$00e2,$0000
  1177.     DC.W    $00e4,$0000,$00e6,$0000
  1178.     DC.W    $00e8,$0000,$00ea,$0000
  1179. bpln71:    DC.W    $00ec,$0000,$00ee,$0000
  1180.  
  1181.     dc.w    $1d01,$fffe
  1182.     DC.W    $00e0,$0000,$00e2,$0000
  1183.     DC.W    $00e4,$0000,$00e6,$0000
  1184.     DC.W    $00e8,$0000,$00ea,$0000
  1185. bpln72:    DC.W    $00ec,$0000,$00ee,$0000
  1186.  
  1187.     dc.w    $1e01,$fffe
  1188.     DC.W    $00e0,$0000,$00e2,$0000
  1189.     DC.W    $00e4,$0000,$00e6,$0000
  1190.     DC.W    $00e8,$0000,$00ea,$0000
  1191. bpln73:    DC.W    $00ec,$0000,$00ee,$0000
  1192.  
  1193.     dc.w    $1f01,$fffe
  1194.     DC.W    $00e0,$0000,$00e2,$0000
  1195.     DC.W    $00e4,$0000,$00e6,$0000
  1196.     DC.W    $00e8,$0000,$00ea,$0000
  1197. bpln74:    DC.W    $00ec,$0000,$00ee,$0000
  1198.  
  1199.     dc.w    $2001,$fffe
  1200.     DC.W    $00e0,$0000,$00e2,$0000
  1201.     DC.W    $00e4,$0000,$00e6,$0000
  1202.     DC.W    $00e8,$0000,$00ea,$0000
  1203. bpln75:    DC.W    $00ec,$0000,$00ee,$0000
  1204.  
  1205.     dc.w    $2101,$fffe
  1206.     DC.W    $00e0,$0000,$00e2,$0000
  1207.     DC.W    $00e4,$0000,$00e6,$0000
  1208.     DC.W    $00e8,$0000,$00ea,$0000
  1209. bpln76:    DC.W    $00ec,$0000,$00ee,$0000
  1210.  
  1211.     dc.w    $2201,$fffe
  1212.     DC.W    $00e0,$0000,$00e2,$0000
  1213.     DC.W    $00e4,$0000,$00e6,$0000
  1214.     DC.W    $00e8,$0000,$00ea,$0000
  1215. bpln77:    DC.W    $00ec,$0000,$00ee,$0000
  1216.  
  1217.     dc.w    $2301,$fffe
  1218.     DC.W    $00e0,$0000,$00e2,$0000
  1219.     DC.W    $00e4,$0000,$00e6,$0000
  1220.     DC.W    $00e8,$0000,$00ea,$0000
  1221. bpln78:    DC.W    $00ec,$0000,$00ee,$0000
  1222.  
  1223.     dc.w    $2401,$fffe
  1224.     DC.W    $00e0,$0000,$00e2,$0000
  1225.     DC.W    $00e4,$0000,$00e6,$0000
  1226.     DC.W    $00e8,$0000,$00ea,$0000
  1227. bpln79:    DC.W    $00ec,$0000,$00ee,$0000
  1228.  
  1229.     dc.w    $2501,$fffe
  1230.     DC.W    $00e0,$0000,$00e2,$0000
  1231.     DC.W    $00e4,$0000,$00e6,$0000
  1232.     DC.W    $00e8,$0000,$00ea,$0000
  1233. bpln7a:    DC.W    $00ec,$0000,$00ee,$0000
  1234.  
  1235.     dc.w    $2601,$fffe
  1236.     DC.W    $00e0,$0000,$00e2,$0000
  1237.     DC.W    $00e4,$0000,$00e6,$0000
  1238.     DC.W    $00e8,$0000,$00ea,$0000
  1239. bpln7b:    DC.W    $00ec,$0000,$00ee,$0000
  1240.  
  1241.     dc.w    $2701,$fffe
  1242.     DC.W    $00e0,$0000,$00e2,$0000
  1243.     DC.W    $00e4,$0000,$00e6,$0000
  1244.     DC.W    $00e8,$0000,$00ea,$0000
  1245. bpln7c:    DC.W    $00ec,$0000,$00ee,$0000
  1246.  
  1247.     dc.w    $2801,$fffe
  1248.     DC.W    $00e0,$0000,$00e2,$0000
  1249.     DC.W    $00e4,$0000,$00e6,$0000
  1250.     DC.W    $00e8,$0000,$00ea,$0000
  1251. bpln7d:    DC.W    $00ec,$0000,$00ee,$0000
  1252.  
  1253.     dc.w    $2901,$fffe
  1254.     DC.W    $00e0,$0000,$00e2,$0000
  1255.     DC.W    $00e4,$0000,$00e6,$0000
  1256.     DC.W    $00e8,$0000,$00ea,$0000
  1257. bpln7e:    DC.W    $00ec,$0000,$00ee,$0000
  1258.  
  1259.     dc.w    $2a01,$fffe
  1260.     DC.W    $00e0,$0000,$00e2,$0000
  1261.     DC.W    $00e4,$0000,$00e6,$0000
  1262.     DC.W    $00e8,$0000,$00ea,$0000
  1263. bpln7f:    DC.W    $00ec,$0000,$00ee,$0000
  1264.  
  1265.     dc.w    $2b01,$fffe
  1266.     DC.W    $00e0,$0000,$00e2,$0000
  1267.     DC.W    $00e4,$0000,$00e6,$0000
  1268.     DC.W    $00e8,$0000,$00ea,$0000
  1269. bpln80:    DC.W    $00ec,$0000,$00ee,$0000
  1270.  
  1271.     dc.w    $2c01,$fffe
  1272.     DC.W    $00e0,$0000,$00e2,$0000
  1273.     DC.W    $00e4,$0000,$00e6,$0000
  1274.     DC.W    $00e8,$0000,$00ea,$0000
  1275. bpln81:    DC.W    $00ec,$0000,$00ee,$0000
  1276.  
  1277.     dc.w    $2d01,$fffe
  1278.     DC.W    $00e0,$0000,$00e2,$0000
  1279.     DC.W    $00e4,$0000,$00e6,$0000
  1280.     DC.W    $00e8,$0000,$00ea,$0000
  1281. bpln82:    DC.W    $00ec,$0000,$00ee,$0000
  1282.  
  1283.     dc.w    $ffff,$fffe
  1284.     
  1285.  
  1286. gfxname:
  1287.     DC.B    'graphics.library',0
  1288.     EVEN
  1289. gfxbase:
  1290.     DC.L    0
  1291.  
  1292. stor:    dc.l    0
  1293. pln1:    dc.l    0
  1294. pln2:    dc.l    0
  1295. pln3:    dc.l    0
  1296. pln4:    dc.l    0
  1297. pln5:    dc.l    0
  1298. pln6:    dc.l    0
  1299. sysint:    dc.w    0
  1300. int3save:
  1301.     dc.l    0
  1302. plnbase:dc.l    0
  1303. scrlbase:
  1304.     dc.l    0
  1305.  
  1306. isr:    movem.l    d0/d7-a0/a6,-(sp)
  1307.     move.w    #$0020,$dff09c
  1308.     movem.l    (sp)+,d0/d7-a0/a6
  1309.     rte
  1310.  
  1311. task:    move.w    $dff006,d0
  1312.     and.w    #$ff00,d0
  1313.     cmp.w    #$d500,d0
  1314.     bne    task
  1315.     ;move.w    #$00f0,$dff180
  1316.     jsr    updtspec
  1317.     jsr    blitmnt1
  1318.     jsr    blitmnt2
  1319.     jsr    make_scape
  1320.     jsr    getcirc
  1321.     jsr    replay
  1322.     jsr    scrl
  1323.     ;move.w    #$0000,$dff180
  1324.     rts
  1325.  
  1326.  
  1327.     ************************
  1328.     *Update frame according to frame
  1329.     *Obvious or what?
  1330.     ************************
  1331.  
  1332. Make_scape:
  1333. .lp5:    move.l    xvec,d0
  1334.     add.l    d0,frame
  1335.     move.l    frame,frame2
  1336.     and.l    #15,frame
  1337.     tst.l    xvec
  1338.     beq    .lp4
  1339.     
  1340.     bpl    .lp7
  1341.     tst.l    frame2
  1342.     bpl    .lp4
  1343.     bra    .lp6
  1344.  
  1345. .lp7:    tst.l    frame
  1346.     beq    .lp6
  1347. .lp8:    move.l    frame2,d1
  1348.     cmp.l    #15,d1
  1349.     ble    .lp4
  1350.  
  1351. .lp6:    move.l    startoff,d0
  1352.     move.l    startoff+4,startoff
  1353.     move.l    d0,startoff+4
  1354.  
  1355. .lp4:    lea    squdata,a2
  1356.     lea    squpos,a3
  1357.     move.l    #0,d6
  1358.     move.l    startoff,d4
  1359.     move.l    startoff+4,d5
  1360.     move.l    frame,d2
  1361.     mulu    #5120,d2
  1362.     move.l    #0,d0
  1363.     lea    plnaddr,a0
  1364.     move.w    (a3)+,d6
  1365.     move.w    (a2,d6),d6
  1366.     
  1367. .lp1:    move.l    d2,d3
  1368.     add.l    d4,d3
  1369.     move.l    (a0)+,a1
  1370.     move.w    d3,6(a1)
  1371.     swap    d3
  1372.     move.w    d3,2(a1)
  1373.  
  1374.     add.l    #40,d2
  1375.     add.l    #1,d0
  1376.     cmp.l    #128,d0
  1377.     beq    .lp2
  1378. .lp9:    dbra    d6,.lp1
  1379.     move.l    #0,d6
  1380.     exg    d4,d5
  1381.     move.w    (a3)+,d6
  1382.     move.w    (a2,d6),d6
  1383.     bra    .lp1
  1384. .lp2:
  1385.     move.l    yvec,d0
  1386.     asl.l    #1,d0
  1387.     add.w    d0,squpos
  1388.     add.w    d0,squpos+2
  1389.     add.w    d0,squpos+4
  1390.     add.w    d0,squpos+6
  1391.     add.w    d0,squpos+8
  1392.     add.w    d0,squpos+10
  1393.     add.w    d0,squpos+12
  1394.     add.w    d0,squpos+14
  1395.     add.w    d0,squpos+16
  1396.     add.w    d0,squpos+18
  1397.     tst.w    squpos
  1398.     bpl    .lpa
  1399.  
  1400.     add.w    #20,squpos
  1401.     add.w    #20,squpos+2
  1402.     add.w    #20,squpos+4
  1403.     add.w    #20,squpos+6
  1404.     add.w    #20,squpos+8
  1405.     add.w    #20,squpos+10
  1406.     add.w    #20,squpos+12
  1407.     add.w    #20,squpos+14
  1408.     add.w    #20,squpos+16
  1409.     add.w    #20,squpos+18
  1410.  
  1411.     move.l    startoff,d0
  1412.     move.l    startoff+4,startoff
  1413.     move.l    d0,startoff+4
  1414.     rts
  1415.     
  1416. .lpa:    cmp.w    #20,squpos
  1417.     bge    .lp3
  1418.     rts
  1419. .lp3:    
  1420.     sub.w    #20,squpos
  1421.     sub.w    #20,squpos+2
  1422.     sub.w    #20,squpos+4
  1423.     sub.w    #20,squpos+6
  1424.     sub.w    #20,squpos+8
  1425.     sub.w    #20,squpos+10
  1426.     sub.w    #20,squpos+12
  1427.     sub.w    #20,squpos+14
  1428.     sub.w    #20,squpos+16
  1429.     sub.w    #20,squpos+18
  1430.  
  1431.     move.l    startoff,d0
  1432.     move.l    startoff+4,startoff
  1433.     move.l    d0,startoff+4
  1434.     rts
  1435. frame:    dc.l    0    
  1436. frame2:    dc.l    0    
  1437. count:    dc.l    0
  1438. xvec:    dc.l    0
  1439. yvec:    dc.l    1
  1440. mxpos:    dc.l    0
  1441. mxpos2:    dc.l    0
  1442. vec1:    dc.l    0
  1443. vec2:    dc.l    0
  1444. deg1:    dc.l    0
  1445. deg2:    dc.l    76
  1446. flag:    dc.l    0
  1447.     even
  1448.  
  1449. wb:        btst    #14,$dff002
  1450.         bne.s    wb
  1451.         rts
  1452.  
  1453. Blitmnt1:
  1454.     move.l    xvec,d0        ;update xcoords
  1455.     add.l    d0,mxpos
  1456.     add.l    d0,mxpos2
  1457.     cmp.l    #320,mxpos
  1458.     bge    .lp4
  1459.     tst.l    mxpos
  1460.     bmi    .lp5
  1461.     bra    .lp6
  1462. .lp4:    tst.l    mxpos
  1463.     bmi    .lp5
  1464.     sub.l    #320,mxpos
  1465.     bra    .lp6
  1466. .lp5:    add.l    #320,mxpos
  1467.  
  1468. .lp6:    cmp.l    #640,mxpos2    ;update sec xcoord
  1469.     bge    .lp7
  1470.     tst.l    mxpos2
  1471.     bmi    .lp8
  1472.     bra    .lp9
  1473. .lp7:    tst.l    mxpos2
  1474.     bmi    .lp8
  1475.     sub.l    #640,mxpos2
  1476.     bra    .lp9
  1477. .lp8:    add.l    #640,mxpos2
  1478.  
  1479.  
  1480. .lp9:    ;move.w    #$0fff,$dff180
  1481.     move.l    mxpos2,d5
  1482.     lsr.l    #4,d5
  1483.     bclr    #0,d5
  1484.     sub.l    #40,d5
  1485.     move.l    mxpos2,d3
  1486.     lsr.l    #1,d3
  1487.     and.l    #$0f,d3
  1488.     asl.l    #8,d3
  1489.     asl.l    #4,d3
  1490.     and.w    #$f000,d3
  1491.     move.w    d3,d4
  1492.     or.w    #%0000100111110000,d3    
  1493.  
  1494.     bsr    wb
  1495.     
  1496.     move.l    #mount1-2,d0
  1497.     move.l    pln1,d1
  1498.     sub.l    d5,d0
  1499.     ;add.l    #50*40,d1
  1500.     move.l    d0,$dff050    ;a source IM
  1501.     move.l    d1,$dff054    ;d source
  1502.     move.w    #$0026,$dff064    ;a mod
  1503.     move.w    #$0000,$dff066    ;d mod
  1504.     move.w    #$ffff,$dff044    ;fw mask
  1505.     move.w    #$ffff,$dff046    ;lw mask
  1506.     move.w    d3,$dff040    ;con0
  1507.     move.w    d4,$dff042    ;con1
  1508.     move.w    #%0001001110010101,$dff058    ;size        
  1509.     ;move.w    #$0000,$dff180
  1510.     bsr    wb
  1511.  
  1512.     add.l    #plnsize,d1
  1513.     add.l    #$1860,d0
  1514.     move.l    d0,$dff050    ;a source IM
  1515.     move.l    d1,$dff054    ;d source    
  1516.     move.w    #%0001001110010101,$dff058    ;size        
  1517.     ;move.w    #$0000,$dff180
  1518.     bsr    wb
  1519.  
  1520.     add.l    #plnsize,d1
  1521.     add.l    #$1860,d0
  1522.  
  1523.     move.l    d0,$dff050    ;a source IM
  1524.     move.l    d1,$dff054    ;d source
  1525.     move.w    #%0001001110010101,$dff058    ;size        
  1526.     ;move.w    #$0000,$dff180
  1527.     bsr    wb
  1528.     rts
  1529.     even
  1530.  
  1531. Blitmnt2:
  1532.     ;move.w    #$0fff,$dff180
  1533.  
  1534.     move.l    mxpos,d5
  1535.     lsr.l    #3,d5
  1536.     bclr    #0,d5
  1537.     sub.l    #40,d5
  1538.     move.l    mxpos,d3
  1539.     and.l    #$0f,d3
  1540.     asl.l    #8,d3
  1541.     asl.l    #4,d3
  1542.     and.w    #$f000,d3
  1543.     move.w    d3,d4
  1544.     or.w    #%0000111110111000,d3    
  1545.     
  1546.     move.l    #mount2-2,d0
  1547.     sub.l    d5,d0
  1548.     move.l    #mask-2,d2
  1549.     sub.l    d5,d2
  1550.     move.l    pln1,d1
  1551.     add.l    #46*42,d1
  1552.     move.l    d0,$dff050    ;a source IM
  1553.     move.l    d2,$dff04c    ;b mask IM
  1554.     move.l    d1,$dff048    ;c source
  1555.     move.l    d1,$dff054    ;d source
  1556.     move.w    #$0026,$dff064    ;a mod
  1557.     move.w    #$0026,$dff062    ;b mod
  1558.     move.w    #$0000,$dff060    ;c mod
  1559.     move.w    #$0000,$dff066    ;d mod
  1560.     move.w    #$ffff,$dff044    ;fw mask
  1561.     move.w    #$ffff,$dff046    ;lw mask
  1562.     move.w    d3,$dff040    ;con0
  1563.     move.w    d4,$dff042    ;con1
  1564.     move.w    #%0000100000010101,$dff058    ;size        
  1565.     bsr    wb
  1566.     ;move.w    #$0000,$dff180
  1567.  
  1568.     * M-00001111 10111000       *
  1569.  
  1570.     add.l    #plnsize,d1
  1571.     add.l    #$a00,d0
  1572.  
  1573.     move.l    d0,$dff050    ;a source IM
  1574.     move.l    d2,$dff04c    ;b mask IM
  1575.     move.l    d1,$dff048    ;c source
  1576.     move.l    d1,$dff054    ;d source    
  1577.     move.w    #%0000100000010101,$dff058    ;size        
  1578.     bsr    wb
  1579.     ;move.w    #$0000,$dff180
  1580.  
  1581.     add.l    #plnsize,d1
  1582.     add.l    #$a00,d0
  1583.  
  1584.     move.l    d0,$dff050    ;a source IM
  1585.     move.l    d2,$dff04c    ;b mask IM
  1586.     move.l    d1,$dff048    ;c source
  1587.     move.l    d1,$dff054    ;d source
  1588.     move.w    #%0000100000010101,$dff058    ;size        
  1589.     bsr    wb
  1590.     ;move.w    #$0000,$dff180
  1591.  
  1592.     rts
  1593.  
  1594.  
  1595. Getcirc:
  1596.     move.l    deg1,d0
  1597.     lea    lrgcircle,a0
  1598.     move.l    (a0,d0),d0
  1599.     move.l    d0,xvec
  1600.  
  1601.     add.l    #4,deg1
  1602.     add.l    deg1,a0
  1603.     cmp.l    #vec,a0
  1604.     bne    .lp
  1605.     move.l    #0,deg1
  1606. .lp:    add.l    #1,deg2
  1607.     cmp.l    #1000,deg2
  1608.     bne    .lp2
  1609.     move.l    #0,deg2
  1610.     eor.l    #-1,yvec
  1611. .lp2:    rts
  1612.  
  1613. updtspec:
  1614.     tst.l    spcl0
  1615.     beq    nospec0
  1616.     move.l    #spec0,a0
  1617.     move.l    spcl0,d0
  1618.     asl.l    #2,d0
  1619.     move.w    #$00ff,4(a0)
  1620.     sub.l    #1,spcl0
  1621.     move.l    #$51,d0        ;80
  1622.     lea    spectab,a1
  1623.     move.l    spcl0,d1
  1624.     asl.l    #1,d1
  1625.     add.w    (a1,d1),d0
  1626.     move.b    d0,(a0)
  1627.     add.l    spcl0,d0
  1628.     move.b    d0,2(a0)
  1629.     move.l    spcl0,d0
  1630.     asl.l    #2,d0
  1631.     move.w    #0,4(a0)    
  1632.     lsr.l    #1,d0
  1633. nospec0:
  1634.     tst.w    mt_aud1temp
  1635.     beq    nov0
  1636.     move.l    #32,spcl0
  1637.     move.w    #0,mt_aud1temp
  1638. nov0:    
  1639.     tst.l    spcl1
  1640.     beq    nospec1
  1641.     move.l    #spec1,a0
  1642.     move.l    spcl1,d0
  1643.     asl.l    #2,d0
  1644.     move.w    #$00ff,4(a0)
  1645.     sub.l    #1,spcl1
  1646.     move.l    #$51,d0
  1647.     lea    spectab,a1
  1648.     move.l    spcl1,d1
  1649.     asl.l    #1,d1
  1650.     add.w    (a1,d1),d0
  1651.     move.b    d0,(a0)
  1652.     add.l    spcl1,d0
  1653.     move.b    d0,2(a0)
  1654.     move.l    spcl1,d0
  1655.     asl.l    #2,d0
  1656.     move.w    #0,4(a0)    
  1657.     lsr.l    #1,d0
  1658. nospec1:tst.w    mt_aud2temp
  1659.     beq    nov1
  1660.     move.l    #32,spcl1
  1661.     move.w    #0,mt_aud2temp
  1662. nov1:    
  1663.     tst.l    spcl2
  1664.     beq    nospec2
  1665.     move.l    #spec2,a0
  1666.     move.l    spcl2,d0
  1667.     asl.l    #2,d0
  1668.     move.w    #$00ff,4(a0)
  1669.     sub.l    #1,spcl2
  1670.     move.l    #$51,d0
  1671.     lea    spectab,a1
  1672.     move.l    spcl2,d1
  1673.     asl.l    #1,d1
  1674.     add.w    (a1,d1),d0
  1675.     move.b    d0,(a0)
  1676.     add.l    spcl2,d0
  1677.     move.b    d0,2(a0)
  1678.     move.l    spcl2,d0
  1679.     asl.l    #2,d0
  1680.     move.w    #0,4(a0)    
  1681.     lsr.l    #1,d0
  1682. nospec2:tst.w    mt_aud3temp
  1683.     beq    nov2
  1684.     move.l    #32,spcl2
  1685.     move.w    #0,mt_aud3temp
  1686. nov2:    
  1687.     tst.l    spcl3
  1688.     beq    nospec3
  1689.     move.l    #spec3,a0
  1690.     move.l    spcl3,d0
  1691.     asl.l    #2,d0
  1692.     move.l    #$00ff00ff,4(a0)
  1693.     sub.l    #1,spcl3
  1694.     move.l    #$51,d0
  1695.     lea    spectab,a1
  1696.     move.l    spcl3,d1
  1697.     asl.l    #1,d1
  1698.     add.w    (a1,d1),d0
  1699.     move.b    d0,(a0)
  1700.     add.l    spcl3,d0
  1701.     move.b    d0,2(a0)
  1702.     move.l    spcl3,d0
  1703.     asl.l    #2,d0
  1704.     move.l    #0,4(a0)    
  1705.     lsr.l    #1,d0
  1706. nospec3:tst.w    mt_aud4temp
  1707.     beq    nov3
  1708.     move.l    #32,spcl3
  1709.     move.w    #0,mt_aud4temp
  1710. nov3:    rts
  1711.  
  1712.  
  1713. ; -----------------------------------------------
  1714. ; ------- Soundtracker V2.4 - playroutine -------
  1715. ; -----------------------------------------------
  1716.  
  1717. ; call 'mt_init' to initialize the playroutine
  1718.  
  1719. start:    lea    mt_data,a0
  1720.     add.l    #$03b8,a0
  1721.     moveq    #$7f,d0
  1722.     moveq    #0,d1
  1723. mt_init1:
  1724.     move.l    d1,d2
  1725.     subq.w    #1,d0
  1726. mt_init2:
  1727.     move.b    (a0)+,d1
  1728.     cmp.b    d2,d1
  1729.     bgt.s    mt_init1
  1730.     dbf    d0,mt_init2
  1731.     addq.b    #1,d2
  1732.  
  1733. mt_init3:
  1734.     lea    mt_data,a0
  1735.     lea    mt_sample1(pc),a1
  1736.     asl.l    #8,d2
  1737.     asl.l    #2,d2
  1738.     add.l    #$438,d2
  1739.     add.l    a0,d2
  1740.     moveq    #$1e,d0
  1741. mt_init4:
  1742.     move.l    d2,(a1)+
  1743.     moveq    #0,d1
  1744.     move.w    42(a0),d1
  1745.     asl.l    #1,d1
  1746.     add.l    d1,d2
  1747.     add.l    #$1e,a0
  1748.     dbf    d0,mt_init4
  1749.  
  1750.     lea    mt_sample1(PC),a0
  1751.     moveq    #0,d0
  1752. mt_clear:
  1753.     move.l    (a0,d0.w),a1
  1754.     clr.l    (a1)
  1755.     addq.w    #4,d0
  1756.     cmp.w    #$7c,d0
  1757.     bne.s    mt_clear
  1758.  
  1759.     clr.w    $dff0a8
  1760.     clr.w    $dff0b8
  1761.     clr.w    $dff0c8
  1762.     clr.w    $dff0d8
  1763.     clr.l    mt_partnrplay
  1764.     clr.l    mt_partnote
  1765.     clr.l    mt_partpoint
  1766.  
  1767.     move.b    mt_data+$3b6,mt_maxpart+1
  1768.     rts
  1769.  
  1770. ; call 'mt_end' to switch the sound off
  1771.  
  1772. stop:    clr.w    $dff0a8
  1773.     clr.w    $dff0b8
  1774.     clr.w    $dff0c8
  1775.     clr.w    $dff0d8
  1776.     move.w    #$f,$dff096
  1777.     rts
  1778.  
  1779. ; the playroutine - call this every frame
  1780.  
  1781. replay:
  1782.     addq.w    #1,mt_counter
  1783. mt_cool:cmp.w    #6,mt_counter
  1784.     bne.s    mt_notsix
  1785.     clr.w    mt_counter
  1786.     bra    mt_rout2
  1787.  
  1788. mt_notsix:
  1789.     lea    mt_aud1temp(PC),a6
  1790.     tst.b    3(a6)
  1791.     beq.s    mt_arp1
  1792.     lea    $dff0a0,a5        
  1793.     bsr.s    mt_arprout
  1794. mt_arp1:lea    mt_aud2temp(PC),a6
  1795.     tst.b    3(a6)
  1796.     beq.s    mt_arp2
  1797.     lea    $dff0b0,a5
  1798.     bsr.s    mt_arprout
  1799. mt_arp2:lea    mt_aud3temp(PC),a6
  1800.     tst.b    3(a6)
  1801.     beq.s    mt_arp3
  1802.     lea    $dff0c0,a5
  1803.     bsr.s    mt_arprout
  1804. mt_arp3:lea    mt_aud4temp(PC),a6
  1805.     tst.b    3(a6)
  1806.     beq.s    mt_arp4
  1807.     lea    $dff0d0,a5
  1808.     bra.s    mt_arprout
  1809. mt_arp4:rts
  1810.  
  1811. mt_arprout:
  1812.     move.b    2(a6),d0
  1813.     and.b    #$0f,d0
  1814.     tst.b    d0
  1815.     beq    mt_arpegrt
  1816.     cmp.b    #$01,d0
  1817.     beq.s    mt_portup
  1818.     cmp.b    #$02,d0
  1819.     beq.s    mt_portdwn
  1820.     cmp.b    #$0a,d0
  1821.     beq.s    mt_volslide
  1822.     rts
  1823.  
  1824. mt_portup:
  1825.     moveq    #0,d0
  1826.     move.b    3(a6),d0
  1827.     sub.w    d0,22(a6)
  1828.     cmp.w    #$71,22(a6)
  1829.     bpl.s    mt_ok1
  1830.     move.w    #$71,22(a6)
  1831. mt_ok1:    move.w    22(a6),6(a5)
  1832.     rts
  1833.  
  1834. mt_portdwn:
  1835.     moveq    #0,d0
  1836.     move.b    3(a6),d0
  1837.     add.w    d0,22(a6)
  1838.     cmp.w    #$538,22(a6)
  1839.     bmi.s    mt_ok2
  1840.     move.w    #$538,22(a6)
  1841. mt_ok2:    move.w    22(a6),6(a5)
  1842.     rts
  1843.  
  1844. mt_volslide:
  1845.     moveq    #0,d0
  1846.     move.b    3(a6),d0
  1847.     lsr.b    #4,d0
  1848.     tst.b    d0
  1849.     beq.s    mt_voldwn
  1850.     add.w    d0,18(a6)
  1851.     cmp.w    #64,18(a6)
  1852.     bmi.s    mt_ok3
  1853.     move.w    #64,18(a6)
  1854. mt_ok3:    move.w    18(a6),8(a5)
  1855.     rts
  1856. mt_voldwn:
  1857.     moveq    #0,d0
  1858.     move.b    3(a6),d0
  1859.     and.b    #$0f,d0
  1860.     sub.w    d0,18(a6)
  1861.     bpl.s    mt_ok4
  1862.     clr.w    18(a6)
  1863. mt_ok4:    move.w    18(a6),8(a5)
  1864.     rts
  1865.  
  1866. mt_arpegrt:
  1867.     move.w    mt_counter(PC),d0
  1868.     cmp.w    #1,d0
  1869.     beq.s    mt_loop2
  1870.     cmp.w    #2,d0
  1871.     beq.s    mt_loop3
  1872.     cmp.w    #3,d0
  1873.     beq.s    mt_loop4
  1874.     cmp.w    #4,d0
  1875.     beq.s    mt_loop2
  1876.     cmp.w    #5,d0
  1877.     beq.s    mt_loop3
  1878.     rts
  1879.  
  1880. mt_loop2:
  1881.     moveq    #0,d0
  1882.     move.b    3(a6),d0
  1883.     lsr.b    #4,d0
  1884.     bra.s    mt_cont
  1885. mt_loop3:
  1886.     moveq    #$00,d0
  1887.     move.b    3(a6),d0
  1888.     and.b    #$0f,d0
  1889.     bra.s    mt_cont
  1890. mt_loop4:
  1891.     move.w    16(a6),d2
  1892.     bra.s    mt_endpart
  1893. mt_cont:
  1894.     add.w    d0,d0
  1895.     moveq    #0,d1
  1896.     move.w    16(a6),d1
  1897.     and.w    #$fff,d1
  1898.     lea    mt_arpeggio(PC),a0
  1899. mt_loop5:
  1900.     move.w    (a0,d0),d2
  1901.     cmp.w    (a0),d1
  1902.     beq.s    mt_endpart
  1903.     addq.l    #2,a0
  1904.     bra.s    mt_loop5
  1905. mt_endpart:
  1906.     move.w    d2,6(a5)
  1907.     rts
  1908.  
  1909. mt_rout2:
  1910.     lea    mt_data,a0
  1911.     move.l    a0,a3
  1912.     add.l    #$0c,a3
  1913.     move.l    a0,a2
  1914.     add.l    #$3b8,a2
  1915.     add.l    #$43c,a0
  1916.     move.l    mt_partnrplay(PC),d0
  1917.     moveq    #0,d1
  1918.     move.b    (a2,d0),d1
  1919.     asl.l    #8,d1
  1920.     asl.l    #2,d1
  1921.     add.l    mt_partnote(PC),d1
  1922.     move.l    d1,mt_partpoint
  1923.     clr.w    mt_dmacon
  1924.  
  1925.     lea    $dff0a0,a5
  1926.     lea    mt_aud1temp(PC),a6
  1927.     bsr    mt_playit
  1928.     lea    $dff0b0,a5
  1929.     lea    mt_aud2temp(PC),a6
  1930.     bsr    mt_playit
  1931.     lea    $dff0c0,a5
  1932.     lea    mt_aud3temp(PC),a6
  1933.     bsr    mt_playit
  1934.     lea    $dff0d0,a5
  1935.     lea    mt_aud4temp(PC),a6
  1936.     bsr    mt_playit
  1937.  
  1938.         moveq    #3-1,d0
  1939. pp_waitdma2    move.b    $dff006,d1
  1940. pp_waitdma3    cmp.b    $dff006,d1
  1941.         dbeq    d0,pp_waitdma2        ;do a few *LAME* rasters waits
  1942.         beq.b    pp_waitdma3        ;for samples to finish playing!
  1943.  
  1944.     move.w    #$8000,d0
  1945.     or.w    mt_dmacon,d0
  1946.     move.w    d0,$dff096
  1947.  
  1948.     lea    mt_aud4temp(PC),a6
  1949.     cmp.w    #1,14(a6)
  1950.     bne.s    mt_voice3
  1951.     move.l    10(a6),$dff0d0
  1952.     move.w    #1,$dff0d4
  1953. mt_voice3:
  1954.     lea    mt_aud3temp(PC),a6
  1955.     cmp.w    #1,14(a6)
  1956.     bne.s    mt_voice2
  1957.     move.l    10(a6),$dff0c0
  1958.     move.w    #1,$dff0c4
  1959. mt_voice2:
  1960.     lea    mt_aud2temp(PC),a6
  1961.     cmp.w    #1,14(a6)
  1962.     bne.s    mt_voice1
  1963.     move.l    10(a6),$dff0b0
  1964.     move.w    #1,$dff0b4
  1965. mt_voice1:
  1966.     lea    mt_aud1temp(PC),a6
  1967.     cmp.w    #1,14(a6)
  1968.     bne.s    mt_voice0
  1969.     move.l    10(a6),$dff0a0
  1970.     move.w    #1,$dff0a4
  1971. mt_voice0:
  1972.     move.l    mt_partnote(PC),d0
  1973.     add.l    #$10,d0
  1974.     move.l    d0,mt_partnote
  1975.     cmp.l    #$400,d0
  1976.     bne.s    mt_stop
  1977. mt_higher:
  1978.     clr.l    mt_partnote
  1979.     addq.l    #1,mt_partnrplay
  1980.     moveq    #0,d0
  1981.     move.w    mt_maxpart(PC),d0
  1982.     move.l    mt_partnrplay(PC),d1
  1983.     cmp.l    d0,d1
  1984.     bne.s    mt_stop
  1985.     clr.l    mt_partnrplay
  1986. mt_stop:tst.w    mt_status
  1987.     beq.s    mt_stop2
  1988.     clr.w    mt_status
  1989.     bra.s    mt_higher
  1990. mt_stop2:
  1991.     rts
  1992.  
  1993. mt_playit:
  1994.     move.l    (a0,d1.l),(a6)
  1995.     addq.l    #4,d1
  1996.     moveq    #0,d2
  1997.     move.b    2(a6),d2
  1998.     and.b    #$f0,d2
  1999.     lsr.b    #4,d2
  2000.  
  2001.     move.b    (a6),d0
  2002.     and.b    #$f0,d0
  2003.     or.b    d0,d2
  2004.     tst.b    d2
  2005.     beq.s    mt_nosamplechange
  2006.  
  2007.     moveq    #0,d3
  2008.     lea    mt_samples(PC),a1
  2009.     move.l    d2,d4
  2010.     asl.l    #2,d2
  2011.     mulu    #$1e,d4
  2012.     move.l    (a1,d2),4(a6)
  2013.     move.w    (a3,d4.l),8(a6)
  2014.     move.w    2(a3,d4.l),18(a6)
  2015.     move.w    4(a3,d4.l),d3
  2016.     tst.w    d3
  2017.     beq.s    mt_displace
  2018.     move.l    4(a6),d2
  2019.     add.l    d3,d2
  2020.     move.l    d2,4(a6)
  2021.     move.l    d2,10(a6)
  2022.     move.w    6(a3,d4.l),8(a6)
  2023.     move.w    6(a3,d4.l),14(a6)
  2024.     move.w    18(a6),8(a5)
  2025.     bra.s    mt_nosamplechange
  2026.  
  2027. mt_displace:
  2028.     move.l    4(a6),d2
  2029.     add.l    d3,d2
  2030.     move.l    d2,10(a6)
  2031.     move.w    6(a3,d4.l),14(a6)
  2032.     move.w    18(a6),8(a5)
  2033. mt_nosamplechange:
  2034.     move.w    (a6),d0
  2035.     and.w    #$fff,d0
  2036.     tst.w    d0
  2037.     beq.s    mt_retrout
  2038.     move.w    (a6),16(a6)
  2039.     move.w    20(a6),$dff096
  2040.     move.l    4(a6),(a5)
  2041.     move.w    8(a6),4(a5)
  2042.     move.w    (a6),d0
  2043.     and.w    #$fff,d0
  2044.     move.w    d0,6(a5)
  2045.     move.w    20(a6),d0
  2046.     or.w    d0,mt_dmacon
  2047.  
  2048. mt_retrout:
  2049.     tst.w    (a6)
  2050.     beq.s    mt_nonewper
  2051.     move.w    (a6),22(a6)
  2052.  
  2053. mt_nonewper:
  2054.     move.b    2(a6),d0
  2055.     and.b    #$0f,d0
  2056.     cmp.b    #$0b,d0
  2057.     beq.s    mt_posjmp
  2058.     cmp.b    #$0c,d0
  2059.     beq.s    mt_setvol
  2060.     cmp.b    #$0d,d0
  2061.     beq.s    mt_break
  2062.     cmp.b    #$0e,d0
  2063.     beq.s    mt_setfil
  2064.     cmp.b    #$0f,d0
  2065.     beq.s    mt_setspeed
  2066.     rts
  2067.  
  2068. mt_posjmp:
  2069.     not.w    mt_status
  2070.     moveq    #0,d0
  2071.     move.b    3(a6),d0
  2072.     subq.b    #1,d0
  2073.     move.l    d0,mt_partnrplay
  2074.     rts
  2075.  
  2076. mt_setvol:
  2077.     move.b    3(a6),8(a5)
  2078.     rts
  2079.  
  2080. mt_break:
  2081.     not.w    mt_status
  2082.     rts
  2083.  
  2084. mt_setfil:
  2085.     moveq    #0,d0
  2086.     move.b    3(a6),d0
  2087.     and.b    #1,d0
  2088.     rol.b    #1,d0
  2089.     and.b    #$fd,$bfe001
  2090.     or.b    d0,$bfe001
  2091.     rts
  2092.  
  2093. mt_setspeed:
  2094.     move.b    3(a6),d0
  2095.     and.b    #$0f,d0
  2096.     beq.s    mt_back
  2097.     clr.w    mt_counter
  2098.     move.b    d0,mt_cool+3
  2099. mt_back:rts
  2100.  
  2101. mt_aud1temp:
  2102.     dcb.w    10,0
  2103.     dc.w    1
  2104.     dcb.w    2,0
  2105. mt_aud2temp:
  2106.     dcb.w    10,0
  2107.     dc.w    2
  2108.     dcb.w    2,0
  2109. mt_aud3temp:
  2110.     dcb.w    10,0
  2111.     dc.w    4
  2112.     dcb.w    2,0
  2113. mt_aud4temp:
  2114.     dcb.w    10,0
  2115.     dc.w    8
  2116.     dcb.w    2,0
  2117.  
  2118. mt_partnote:    dc.l    0
  2119. mt_partnrplay:    dc.l    0
  2120. mt_counter:    dc.w    0
  2121. mt_partpoint:    dc.l    0
  2122. mt_samples:    dc.l    0
  2123. mt_sample1:    dcb.l    31,0
  2124. mt_maxpart:    dc.w    0
  2125. mt_dmacon:    dc.w    0
  2126. mt_status:    dc.w    0
  2127.  
  2128. mt_arpeggio:
  2129.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  2130.     dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  2131.     dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  2132.     dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  2133.     dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  2134.  
  2135. lrgcircle:
  2136.     dc.l    -8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8
  2137.     dc.l    -8,-8,-8,-8,-8,-8,-8,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7
  2138.     dc.l    -6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-5,-5,-5,-5,-5,-5,-5,-5,-5,-4
  2139.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2
  2140.     dc.l    -2,-2,-2,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,1,1,1
  2141.     dc.l    1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3
  2142.     dc.l    3,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5
  2143.     dc.l    6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7
  2144.     dc.l    7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
  2145.     dc.l    7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
  2146.     dc.l    7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6
  2147.     dc.l    5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,3
  2148.     dc.l    3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,1,1,1,1,1
  2149.     dc.l    1,1,1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-2,-2,-2
  2150.     dc.l    -2,-2,-2,-2,-2,-3,-3,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-4
  2151.     dc.l    -4,-5,-5,-5,-5,-5,-5,-5,-5,-5,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6
  2152.     dc.l    -7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-8,-8,-8,-8,-8,-8,-8
  2153.     dc.l    -8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8
  2154.  
  2155.     dc.l    -7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7
  2156.     dc.l    -6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-5,-5,-5,-5,-5,-5,-5,-5,-5,-4
  2157.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2
  2158.     dc.l    -2,-2,-2,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0
  2159.  
  2160. medcircle:
  2161.     dc.l    1,1,1,1,1,1,1,1,1,1,1,1,1
  2162.     dc.l    1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
  2163.     dc.l    2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3
  2164.     dc.l    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
  2165.     dc.l    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
  2166.     dc.l    3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2
  2167.     dc.l    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1
  2168.     dc.l    1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  2169.     dc.l    0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
  2170.     dc.l    -1,-1,-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
  2171.     dc.l    -2,-2,-2,-2,-2,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3
  2172.     dc.l    -3,-3,-3,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
  2173.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
  2174.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
  2175.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-3,-3,-3
  2176.     dc.l    -3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2
  2177.     dc.l    -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1
  2178.     dc.l    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0
  2179.     dc.l    0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1
  2180.     dc.l    1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
  2181.     dc.l    2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3
  2182.     dc.l    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
  2183.     dc.l    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
  2184.  
  2185.     dc.l    2,2,2,2,2,2,2,2,2
  2186.     dc.l    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1
  2187.     dc.l    1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  2188.     dc.l    0,0,0,0,0,0,0,0,0,0
  2189.  
  2190.     dc.l    -1,-1,-1,-1,-1,-1,-1,-2,-2,-2
  2191.     dc.l    -2,-2,-2,-2,-2,-3,-3,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-4
  2192.     dc.l    -4,-5,-5,-5,-5,-5,-5,-5,-5,-5,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6
  2193.     dc.l    -7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-8,-8,-8,-8,-8,-8,-8
  2194.     dc.l    -8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8
  2195.  
  2196. vec:    dc.l    0
  2197.  
  2198.  
  2199. Killspr:
  2200.     move.l    #deadspr,d0
  2201.     move.w    d0,sp0+6
  2202.     move.w    d0,sp1+6
  2203.     move.w    d0,sp2+6
  2204.     move.w    d0,sp3+6
  2205.     move.w    d0,sp4+6
  2206.     move.w    d0,sp5+6
  2207.     move.w    d0,sp6+6
  2208.     move.w    d0,sp7+6
  2209.     swap    d0
  2210.     move.w    d0,sp0+2
  2211.     move.w    d0,sp1+2
  2212.     move.w    d0,sp2+2
  2213.     move.w    d0,sp3+2
  2214.     move.w    d0,sp4+2
  2215.     move.w    d0,sp5+2
  2216.     move.w    d0,sp6+2
  2217.     move.w    d0,sp7+2
  2218.     rts
  2219.     even
  2220.  
  2221. scrl:    tst.l    pause
  2222.     beq    .lp
  2223.     sub.l    #1,pause
  2224.     rts
  2225. .lp:    jsr    scrl2
  2226. scrl2:    sub.b    #1,scrlcount
  2227.     bne    nextpix
  2228.     moveq.l    #0,d0
  2229.     lea    mess,a0
  2230.     add.l    messcount,a0
  2231.     move.b    (a0),d0
  2232.     bne    notend
  2233.     move.l    #0,messcount
  2234.     bra    nextpix
  2235. notend:    cmp.b    #$ff,d0
  2236.     bne    notpause
  2237.     move.l    #100,pause
  2238.     add.l    #1,messcount
  2239.     rts
  2240. notpause:
  2241.     add.l    #1,messcount
  2242.     sub.b    #32,d0
  2243.     lea    pixwidth,a0
  2244.     move.b    (a0,d0),scrlcount
  2245.     asl.l    #1,d0
  2246.     lea    chars,a1
  2247.     add.l    d0,a1
  2248.     move.l    scrlbase,a0
  2249.     add.l    #42,a0
  2250.  
  2251.     moveq.l    #2,d0
  2252.  
  2253. .lp:    move.w    (a1),(a0)
  2254.     move.w    118(a1),44(a0)
  2255.     move.w    236(a1),88(a0)
  2256.     move.w    354(a1),132(a0)
  2257.     move.w    472(a1),176(a0)
  2258.  
  2259.     move.w    590(a1),220(a0)
  2260.     move.w    708(a1),264(a0)
  2261.     move.w    826(a1),308(a0)
  2262.     move.w    944(a1),352(a0)
  2263.     move.w    1062(a1),396(a0)
  2264.  
  2265.     move.w    1180(a1),440(a0)
  2266.     move.w    1298(a1),484(a0)
  2267.     move.w    1416(a1),528(a0)
  2268.     move.w    1534(a1),572(a0)
  2269.     move.w    1652(a1),616(a0)
  2270.  
  2271.     move.w    1770(a1),660(a0)
  2272.     move.w    1888(a1),704(a0)
  2273.     move.w    2006(a1),748(a0)
  2274.     move.w    2124(a1),792(a0)
  2275.     move.w    2242(a1),836(a0)
  2276.  
  2277.     move.w    2360(a1),880(a0)
  2278.     move.w    2478(a1),924(a0)
  2279.     move.w    2596(a1),968(a0)
  2280.     move.w    2714(a1),1012(a0)
  2281.     move.w    2832(a1),1056(a0)
  2282.  
  2283.     add.l    #$44c,a0
  2284.     add.l    #$b86,a1
  2285.     dbra    d0,.lp
  2286.  
  2287. nextpix:move.l    scrlbase,d0
  2288.     move.l    d0,d1
  2289.     add.l    #2,d0
  2290.     move.l    d0,$dff050    ;a source IM
  2291.     move.l    d1,$dff054    ;d source
  2292.     move.w    #$0000,$dff064    ;a mod
  2293.     move.w    #$0000,$dff066    ;d mod
  2294.     move.w    #$7fff,$dff044    ;fw mask
  2295.     move.w    #$ffff,$dff046    ;lw mask
  2296.     move.w    #%1111100111110000,$dff040    ;con0
  2297.     move.w    #%1111000000000000,$dff042    ;con1
  2298.     move.w    #%0000011001010110,$dff058    ;size        
  2299.     bsr    wb
  2300.     ;move.w    #$0000,$dff180
  2301.  
  2302.  
  2303.     add.l    #$44c,d1
  2304.     add.l    #$44c,d0
  2305.     
  2306.     move.l    d0,$dff050    ;a source IM
  2307.     move.l    d1,$dff054    ;d source
  2308.     move.w    #%0000011001010110,$dff058    ;size        
  2309.     bsr    wb
  2310.  
  2311.     add.l    #$44c,d1
  2312.     add.l    #$44c,d0
  2313.     
  2314.     move.l    d0,$dff050    ;a source IM
  2315.     move.l    d1,$dff054    ;d source
  2316.     move.w    #%0000011001010110,$dff058    ;size        
  2317.     bsr    wb
  2318.  
  2319.     rts
  2320.  
  2321. messcount:
  2322.     dc.l    0
  2323. pause:    dc.l    0
  2324. scrlcount:
  2325.     dc.b    2
  2326.     even
  2327.  
  2328. pixwidth:                 
  2329.     dc.b    10,6,14,16,16,16,16,7,11,11,16,16,7,16,7,16,16,7
  2330.     dc.b    16,16,16,16,16,16,16,16,6,7
  2331.     dc.b    16,16,16,16,16,16,16,16,16,16,16,16,16,6
  2332.     dc.b    16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
  2333.     dc.b    16,16,16
  2334.  
  2335.  
  2336. mess:    
  2337.     DC.B     "                POO             ",255
  2338.     dc.b    "                      ",0
  2339.     
  2340.     even
  2341.     
  2342. plnaddr:
  2343.     dc.l    bpln1,bpln2,bpln3,bpln4,bpln5,bpln6,bpln7,bpln8
  2344.     dc.l    bpln9,bplna,bplnb,bplnc,bplnd,bplne,bplnf,bpln10
  2345.     dc.l    bpln11,bpln12,bpln13,bpln14,bpln15,bpln16,bpln17,bpln18
  2346.     dc.l    bpln19,bpln1a,bpln1b,bpln1c,bpln1d,bpln1e,bpln1f,bpln20
  2347.     dc.l    bpln21,bpln22,bpln23,bpln24,bpln25,bpln26,bpln27,bpln28
  2348.     dc.l    bpln29,bpln2a,bpln2b,bpln2c,bpln2d,bpln2e,bpln2f,bpln30
  2349.     dc.l    bpln31,bpln32,bpln33,bpln34,bpln35,bpln36,bpln37,bpln38
  2350.     dc.l    bpln39,bpln3a,bpln3b,bpln3c,bpln3d,bpln3e,bpln3f,bpln40
  2351.     dc.l    bpln41,bpln42,bpln43,bpln44,bpln45,bpln46,bpln47,bpln48
  2352.     dc.l    bpln49,bpln4a,bpln4b,bpln4c,bpln4d,bpln4e,bpln4f,bpln50
  2353.     dc.l    bpln51,bpln52,bpln53,bpln54,bpln55,bpln56,bpln57,bpln58
  2354.     dc.l    bpln59,bpln5a,bpln5b,bpln5c,bpln5d,bpln5e,bpln5f,bpln60
  2355.     dc.l    bpln61,bpln62,bpln63,bpln64,bpln65,bpln66,bpln67,bpln68
  2356.     dc.l    bpln69,bpln6a,bpln6b,bpln6c,bpln6d,bpln6e,bpln6f,bpln70
  2357.     dc.l    bpln71,bpln72,bpln73,bpln74,bpln75,bpln76,bpln77,bpln78
  2358.     dc.l    bpln79,bpln7a,bpln7b,bpln7c,bpln7d,bpln7e,bpln7f,bpln80
  2359.  
  2360. squdata:
  2361.     dc.w    0,0,0,0,0,1,1
  2362.     dc.w    1,1,2,2,2,3,3,4,4,5
  2363.     dc.w    5,6,6,7,7,8,9,9,10,11
  2364.     dc.w    12,13,13,14,15,16,17,18,19,20
  2365.     dc.w    21,22,23,24,25,26,28,29,30,31
  2366.     dc.w    33,34,35,37,38,39,41,42,44,45
  2367.     dc.w    47,48,50,52,53,55,57,58,60,62
  2368.     dc.w    64,65,67,69,71,73,75,77,79,81
  2369.     dc.w    83,85,87,89,91,93,96,98,100,102
  2370.     dc.w    105,107,109,112,114,117,119,121,124,127
  2371.  
  2372. squpos:    dc.w    0,20,40,60,80,100,120,140,160,180        ;actual word offsets (+2)'s
  2373. startoff:
  2374.     dc.l    plndat-2
  2375.     dc.l    plndat2-2
  2376.  
  2377. plndat:
  2378.     incbin    bpln1
  2379.     incbin    bpln2
  2380.     incbin    bpln3
  2381.     incbin    bpln4
  2382.     incbin    bpln5
  2383.     incbin    bpln6
  2384.     incbin    bpln7
  2385.     incbin    bpln8
  2386.     incbin    bpln9
  2387.     incbin    bpln10
  2388.     incbin    bpln11
  2389.     incbin    bpln12
  2390.     incbin    bpln13
  2391.     incbin    bpln14
  2392.     incbin    bpln15
  2393.     incbin    bpln16
  2394.  
  2395. plndat2:
  2396.     ds.b    5120*16
  2397. blnk:    ds.b    40
  2398.  
  2399. deadspr:dc.l    0,0,0,0
  2400.  
  2401. mount1:    incbin    'mount1bit'
  2402.     even
  2403. mount2:    incbin    'mount2bit'
  2404.     even
  2405. mask:    incbin    'range2mask'
  2406.     even
  2407. logo:    incbin    'logobit'
  2408.     even
  2409. chars:    incbin    texyraw
  2410.     even
  2411.  
  2412. spcl0:    dc.l    32
  2413. spcl1:    dc.l    32
  2414. spcl2:    dc.l    32
  2415. spcl3:    dc.l    32
  2416. save1:    dc.l    0
  2417. save2:    dc.l    0
  2418. save3:    dc.l    0
  2419. save4:    dc.l    0
  2420. spectab:
  2421.     dc.w    32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17
  2422.     dc.w    16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,1
  2423. spec0:
  2424.     dc.w    $8041,$a000
  2425.     dc.w    $00ff,$0000
  2426.     dc.w    $00ff,$0000
  2427.     dc.w    $00fe,$0001
  2428.     dc.w    $00fc,$003f
  2429.     dc.w    $00fc,$003f
  2430.     dc.w    $00fc,$003f
  2431.     dc.w    $00fc,$003f
  2432.     dc.w    $00fc,$003f
  2433.     dc.w    $00fc,$003f
  2434.     dc.w    $00fc,$003f
  2435.     dc.w    $00fc,$003f
  2436.     dc.w    $00fc,$003f
  2437.     dc.w    $00fc,$003f
  2438.     dc.w    $00fc,$003f
  2439.     dc.w    $00fc,$003f
  2440.     dc.w    $00fc,$003f
  2441.     dc.w    $00fc,$003f
  2442.     dc.w    $00fc,$003f
  2443.     dc.w    $00fc,$003f
  2444.     dc.w    $00fc,$003f
  2445.     dc.w    $00fc,$003f
  2446.     dc.w    $00fc,$003f
  2447.     dc.w    $00fc,$003f
  2448.     dc.w    $00fc,$003f
  2449.     dc.w    $00fc,$003f
  2450.     dc.w    $00fc,$003f
  2451.     dc.w    $00fc,$003f
  2452.     dc.w    $00fc,$003f
  2453.     dc.w    $00fc,$003f
  2454.     dc.w    $00fc,$003f
  2455.     dc.w    $00fc,$003f
  2456.     dc.w    $00fc,$003f
  2457.     dc.w    $0000,$0000
  2458.  
  2459. spec1:
  2460.     dc.w    $8049,$a000
  2461.     dc.w    $00ff,$0000
  2462.     dc.w    $00ff,$0000
  2463.     dc.w    $00fe,$0001
  2464.     dc.w    $00fc,$003f
  2465.     dc.w    $00fc,$003f
  2466.     dc.w    $00fc,$003f
  2467.     dc.w    $00fc,$003f
  2468.     dc.w    $00fc,$003f
  2469.     dc.w    $00fc,$003f
  2470.     dc.w    $00fc,$003f
  2471.     dc.w    $00fc,$003f
  2472.     dc.w    $00fc,$003f
  2473.     dc.w    $00fc,$003f
  2474.     dc.w    $00fc,$003f
  2475.     dc.w    $00fc,$003f
  2476.     dc.w    $00fc,$003f
  2477.     dc.w    $00fc,$003f
  2478.     dc.w    $00fc,$003f
  2479.     dc.w    $00fc,$003f
  2480.     dc.w    $00fc,$003f
  2481.     dc.w    $00fc,$003f
  2482.     dc.w    $00fc,$003f
  2483.     dc.w    $00fc,$003f
  2484.     dc.w    $00fc,$003f
  2485.     dc.w    $00fc,$003f
  2486.     dc.w    $00fc,$003f
  2487.     dc.w    $00fc,$003f
  2488.     dc.w    $00fc,$003f
  2489.     dc.w    $00fc,$003f
  2490.     dc.w    $00fc,$003f
  2491.     dc.w    $00fc,$003f
  2492.     dc.w    $00fc,$003f
  2493.     dc.w    $0000,$0000
  2494.  
  2495. spec2:
  2496.     dc.w    $80cc,$a000
  2497.     dc.w    $00ff,$0000
  2498.     dc.w    $00ff,$0000
  2499.     dc.w    $00fe,$0001
  2500.     dc.w    $00fc,$003f
  2501.     dc.w    $00fc,$003f
  2502.     dc.w    $00fc,$003f
  2503.     dc.w    $00fc,$003f
  2504.     dc.w    $00fc,$003f
  2505.     dc.w    $00fc,$003f
  2506.     dc.w    $00fc,$003f
  2507.     dc.w    $00fc,$003f
  2508.     dc.w    $00fc,$003f
  2509.     dc.w    $00fc,$003f
  2510.     dc.w    $00fc,$003f
  2511.     dc.w    $00fc,$003f
  2512.     dc.w    $00fc,$003f
  2513.     dc.w    $00fc,$003f
  2514.     dc.w    $00fc,$003f
  2515.     dc.w    $00fc,$003f
  2516.     dc.w    $00fc,$003f
  2517.     dc.w    $00fc,$003f
  2518.     dc.w    $00fc,$003f
  2519.     dc.w    $00fc,$003f
  2520.     dc.w    $00fc,$003f
  2521.     dc.w    $00fc,$003f
  2522.     dc.w    $00fc,$003f
  2523.     dc.w    $00fc,$003f
  2524.     dc.w    $00fc,$003f
  2525.     dc.w    $00fc,$003f
  2526.     dc.w    $00fc,$003f
  2527.     dc.w    $00fc,$003f
  2528.     dc.w    $00fc,$003f
  2529.     dc.w    $0000,$0000
  2530.  
  2531. spec3:
  2532.     dc.w    $80d4,$a000
  2533.     dc.w    $00ff,$0000
  2534.     dc.w    $00ff,$0000
  2535.     dc.w    $00fe,$0001
  2536.     dc.w    $00fc,$003f
  2537.     dc.w    $00fc,$003f
  2538.     dc.w    $00fc,$003f
  2539.     dc.w    $00fc,$003f
  2540.     dc.w    $00fc,$003f
  2541.     dc.w    $00fc,$003f
  2542.     dc.w    $00fc,$003f
  2543.     dc.w    $00fc,$003f
  2544.     dc.w    $00fc,$003f
  2545.     dc.w    $00fc,$003f
  2546.     dc.w    $00fc,$003f
  2547.     dc.w    $00fc,$003f
  2548.     dc.w    $00fc,$003f
  2549.     dc.w    $00fc,$003f
  2550.     dc.w    $00fc,$003f
  2551.     dc.w    $00fc,$003f
  2552.     dc.w    $00fc,$003f
  2553.     dc.w    $00fc,$003f
  2554.     dc.w    $00fc,$003f
  2555.     dc.w    $00fc,$003f
  2556.     dc.w    $00fc,$003f
  2557.     dc.w    $00fc,$003f
  2558.     dc.w    $00fc,$003f
  2559.     dc.w    $00fc,$003f
  2560.     dc.w    $00fc,$003f
  2561.     dc.w    $00fc,$003f
  2562.     dc.w    $00fc,$003f
  2563.     dc.w    $00fc,$003f
  2564.     dc.w    $00fc,$003f
  2565.     dc.w    $0000,$0000
  2566.  
  2567. mt_data:    incbin    'work:protracker/modules/mod.zadd_!'
  2568.